java字符串集合
一,java的接口跟C语言所能做到的相比确实是让人眼前一亮的东西。利用接口可以将多种东西放到一起,在编程过程中就能省略掉相同类的很多重复代码,将代码进行分类别的,统一的处理。
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Vector; public class Main {
//static Vector<String> list ;
//static Sets set;
//private static Scanner scan;
//private static Scanner scanstr;
public static void main(String[] args) throws IOException{
Scanner scanstr;
Sets set = null;
Vector<String> list = new Vector<String>();
System.out.println("choose the way to initualize keyboard(1) or file(2),1 or 2:");
Scanner scans = new Scanner(System.in);
int i = scans.nextInt();
if(i == 1){
System.out.println("type \" \" to quit");
while(scans.hasNextLine()){
String str = scans.nextLine();
if(str.equals(" ")){
break;
}
if(list.contains(str)) continue;
else list.add(str);
}
set = new MyString(list);
}
if(i == 2){
list = FileInput();
set = new MyString(list);
}
System.out.println("choose how to operate Strings");
System.out.println("getOrder(1),findString(2),findSet(3)");
System.out.println("interset(4),times(5),add(6),delete(7),print(8)");
while(scans.hasNextInt()){
scanstr = new Scanner(System.in);
i = scans.nextInt();
switch(i){
case 1:
set.getOrder();
set.myTostring();
break;
case 2:
boolean bool1;
System.out.println("type the string to find");
String strtemp = scanstr.nextLine();
bool1 = set.findString(strtemp);
if(bool1){
System.out.println("find"+strtemp+"in strings");
}
else{
System.out.println("404!");
}
break;
case 3:
boolean bool2;
Vector<String> list1 = new Vector<String>();
System.out.println("type the strings set to find");
System.out.println("type \" \" to quit");
while(scanstr.hasNextLine()){
String str2 = scanstr.nextLine();
if(str2.equals(" ")){
break;
}
if(list1.contains(str2)) continue;
else list1.add(str2);
}
bool2 = set.findSet(list1);
if(bool2){
System.out.println("find set in strings");
}
else{
System.out.println("404!");
}
break;
case 4:
Vector<String> list2 = new Vector<String>();
System.out.println("type the strings set to find");
System.out.println("type \" \" to quit");
while(scanstr.hasNextLine()){
String str = scanstr.nextLine();
if(str.equals(" ")){
break;
}
if(list2.contains(str)) continue;
else list2.add(str);
}
list2 = set.interset(list2);
Iterator<String> iter = list2.iterator();
while(iter.hasNext()){
String strs = iter.next();
System.out.println(strs);
}
break;
case 5:
System.out.println("type the times to caculate");
String strtemp1 = scanstr.nextLine();
int j = 0 ;
j = set.times(strtemp1);
System.out.println(strtemp1+" "+j);
break;
case 6:
System.out.println("type the string to add");
String strtemp2 = scanstr.nextLine();
set.add(strtemp2);
set.myTostring();
break;
case 7:
System.out.println("type the string to delete");
String strtemp3 = scanstr.nextLine();
set.delete(strtemp3);
set.myTostring();
break;
}
}
scans.close();
}
public static Vector<String> FileInput() throws IOException{
FileReader reader = new FileReader("in.txt");
int temp;
Vector<String> list;
list =new Vector<String>();
StringBuffer b = new StringBuffer();
while((temp = reader.read()) != -1){
if((char)temp == '\r'){
String s = b.toString();
b.delete(0, b.length());
if(list.contains(s)){
continue;
}
else{
list.add(s);
continue;
}
}
else if((char)temp == '\n'){
continue;
}
else{
b.append((char)temp);
}
}
reader.close();
return list;
}
}
Main
import java.util.Iterator;
import java.util.Vector; public class MyString implements Sets{
protected Vector<String> stringlist;
@SuppressWarnings("unchecked")
public MyString(Vector<String> strcopy){
stringlist = new Vector<String>();
stringlist = (Vector<String>)strcopy.clone();
}
public boolean findSet(Vector<String> strs){
Iterator<String> iter = strs.iterator();
while(iter.hasNext()){
String str = (String)iter.next();
if(stringlist.contains(str)){
continue;
}
else{
return false;
}
}
return true; }
public boolean findString(String s){
return stringlist.contains(s);
}
public Vector<String> getOrder(){
String s1 , s2;
for(int i = 0 ; i < stringlist.size() ; i ++){
for(int j = 0 ; j < stringlist.size() - i -1; j++){
s1 = stringlist.get(j);
s2 = stringlist.get(j+1);
if(s1.compareTo(s2) > 0){
stringlist.set(j+1 , s1);
stringlist.set(j , s2);
}
}
}
return stringlist ;
}
public Vector<String> interset(Vector<String> strs){
Vector<String> temp = new Vector<String>();
Iterator<String> iter = strs.iterator();
while(iter.hasNext()){
String str = (String)iter.next();
if(stringlist.contains(str)){
temp.add(str);
}
}
return temp;
}
public int times(String s){
int time = 0 ;
Iterator<String> iter = stringlist.iterator();
while(iter.hasNext()){
String str = (String)iter.next();
if(str.indexOf(s) == -1){
continue;
}
else{
time ++ ;
}
}
return time;
}
public void add(String s){
stringlist.add(s);
}
public void delete(String s){
if(stringlist.contains(s)) stringlist.remove(s);
else System.out.println(s+" not exists");
}
public void myTostring(){
Iterator<String> iter = stringlist.iterator();
while(iter.hasNext()){
String str = (String)iter.next();
System.out.println(str);
}
} }
MyString
java字符串集合的更多相关文章
- Java字符串String 集合的迭代器
Java字符串String 我们知道Java的字符窜是Immutable(不可变)的,一旦创建就不能更改其内容了:平常我们对字符串的操作是最多的,其实对字符串的操作,返回的字符串都是新建的字符串对象, ...
- 【Java】集合_学习笔记
一.集合 1.集合类也称容器类,主要负责保存.盛装其他数据. 2.集合可以保存数量不确定的数据,保存具有映射关系的数据(也称关联数组). 3.Java5后提供一些多线程安全的集合类,放在java.ut ...
- 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 print-all-combinations-of-given-length
// 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 /* Input: set[] = {'a', 'b'}, k = 3 Output: aaa aab aba ...
- Java之集合初探(一)
一.集合概述.区别 集合是一种容器,数组也是一种容器 在Java编程中,装各种各样的对象(引用类型)的叫做容器. 为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的 ...
- 【JAVA零基础入门系列】Day6 Java字符串
字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...
- java的集合框架set 和map的深入理解
Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...
- Java面试集合(七)
前言: Java面试集合(六) 的回顾,对于final可以修饰常量,方法,和类,一旦常量定义好后就不可改变,而方法,用final来修饰方法,方法不可重载,继承,重写,final用来修饰类,该类不能被继 ...
- Java面试集合(三)
前言 大家好,给大家带来Java面试集合(三)的概述,希望你们喜欢 三 1.在Java中是否可以含有多个类? 答:可以含有多个类,但只有一个是public类,public类的类名与文件名必须一致. 2 ...
- Java面试集合(二)
前言 大家好,给大家带来Java面试集合(二)的概述,希望你们喜欢 二 1.请问线程有哪些状态? 新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked ...
随机推荐
- 一本通1609【例 4】Cats Transport
1609:[例 4]Cats Transport 时间限制: 1000 ms 内存限制: 524288 KB sol:非常偷懒的截图了事 注意:只能猫等人,不能人等猫 对于每只猫,我们 ...
- BZOJ3294 CQOI2011放棋子(动态规划)
可以看做棋子放在某个位置后该种颜色就占领了那一行一列.行列间彼此没有区别. 于是可以设f[i][j][k]表示前k种棋子占领了i行j列的方案数.转移时枚举第k种棋子占领几行几列.注意行列间是有序的,要 ...
- bzoj 2460 [BeiJing2011]元素 (线性基)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2460 题意: 给你一堆矿石,矿石有a,b两种性质,取任意个矿石,满足取得的这些矿石a性质异或 ...
- UVA-1572
解题思路: 之前看到的骚操作,主要思想就是把两个面合在一起看成两个点相连,最后只要找到一个环就可以无限克隆这个环使得无限延迟. 把符号变成数字如A-变为0,A+变为1,则0^1=1 ,这两个符号可以通 ...
- 【BZOJ2244】[SDOI2011]拦截导弹(CDQ分治)
[BZOJ2244][SDOI2011]拦截导弹(CDQ分治) 题面 BZOJ 洛谷 题解 不难发现这就是一个三维偏序+\(LIS\)这样一个\(dp\). 那么第一问很好求,直接\(CDQ\)分治之 ...
- 软Raid5制作
以raid5为例: 1.添加4块磁盘要求:容量.转速.接口一样的硬盘. 2.创建分区并修改ID[root@localhost ~]# fdisk /dev/sdb[root@localhost ~]# ...
- oracle存储过程递归调用
oracle存储过程递归调用,如果where子句使用的是传入的参数, 在以后的递归调用中参数就是第一次调用的参数值,解决办法是定义变量,使用自定义的变量问题可以解决.
- 【模板】倍增+Floyd
题目大意:给定一个 N 个顶点的邻接矩阵.起点顶点.终点顶点,求至少经过 K 条边(边可以重复)从起点到终点的最短路长度,若不能到达,输出 -1. 题解:至少经过 K 条边和恰好经过 K 条边的初始条 ...
- 使用electron为贪吃蛇游戏创建全局快捷键
上图就是我们的简体版贪吃蛇游戏,我们可以看到使用键盘上面的上下左右可以对贪吃蛇进行控制. The picture above is our simplified version of Snake Ea ...
- vijos1543(极值问题)解题报告
(n^2-m*n-m^2)^2=1 是齐次多项式,设n>=m,n=m+t(t>=0). n^2-m*n-m^2=t^2-m*t-m^2 所以(t^2-m*t-m^2)^2=1. 如果n,m ...