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 ...
随机推荐
- codeforces742B
Arpa’s obvious problem and Mehrdad’s terrible solution CodeForces - 742B There are some beautiful gi ...
- ref、out与params
ref 把值传递转换为引用传递,侧重于将一个值带到函数中进行改变,再将改变后的值带出去,ref参数在函数外必须为ref参数赋值 ; AddSalary(ref salary); //如果不写ref,s ...
- Vue模板 script部分
<script> export default { name: "Home", data() { return {}; }, methods: { // 组件的方法 } ...
- TCP的三次握手与四次挥手过程,各个状态名称与含义
三次握手 第一次握手:主机A发送位码为syn=1,随机产生seq number=10001的数据包到服务器,主机B由SYN=1知道,A要求建立联机,此时状态为SYN_SENT: 第二次握手:主机B收到 ...
- 棋盘问题 POJ - 1321
题意: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放 ...
- day5 continue 和 break的区别
# continue num = 1 while num <=10: num += 1 if num == 3: continue print(num) # continue 表示跳出本次循环后 ...
- 【CodeForces 624D/623B】Array GCD
题 You are given array ai of length n. You may consecutively apply two operations to this array: remo ...
- 自学Zabbix11.6 Zabbix SNMP自定义OID
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix11.6 Zabbix SNMP自定义OID 为什么要自定义OID? 前面已经讲过 ...
- 洛谷 P1381 单词背诵 解题报告
P1381 单词背诵 题目描述 灵梦有\(n\)个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由\(m\)个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只 ...
- 【洛谷P1972】HH的项链 离线+树状数组
题目大意:静态查询序列区间颜色数. 题解:对于一个查询区间 [l , r] ,若有两个相同颜色的点在这个区间中,则总是取下标靠近端点 r 的颜色计入答案贡献.对于每个下标,记录下在这个下标之前,且距离 ...