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 ...
随机推荐
- Enum 扩展
项目中,用到枚举值,并且增加中英文描述. 一般的[Description]属性,无法满足中英文,所以进行了简单扩展. 继承DescriptionAttribute,增加了英文描述description ...
- Java监听器Listener的使用详解
监听器用于监听Web应用中某些对象的创建.销毁.增加,修改,删除等动作的发生,然后作出相应的响应处理.当监听范围的对象的状态发生变化的时候,服务器自动调用监听器对象中的方法.常用于统计网站在线人数.系 ...
- LOJ2540 [PKUWC2018] 随机算法 【状压DP】
题目分析: 听说这题考场上能被$ O(4^n) $的暴力水过,难不成出题人是毕姥爷? 首先思考一个显而易见的$ O(n^2*2^n) $的暴力DP.一般的DP都是考虑最近的加入了哪个点,然后删除后递归 ...
- 洛谷P1516 青蛙的约会(扩展欧几里德)
洛谷题目传送门 很容易想到,如果他们相遇,他们初始的位置坐标之差\(x-y\)和跳的距离\((n-m)t\)(设\(t\)为跳的次数)之差应该是模纬线长\(l\)同余的,即\((n-m)t\equiv ...
- 掌握 MySQL 这 19 个骚操作,效率至少提高3倍
本文我们来谈谈项目中常用的MySQL优化方法,共19条,利用好这19条方法,会让你的效率提升至少3倍. 1.EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划. 下面来个简单 ...
- python 和 scikit-learn 实现垃圾邮件过滤
文本挖掘(Text Mining,从文字中获取信息)是一个比较宽泛的概念,这一技术在如今每天都有海量文本数据生成的时代越来越受到关注.目前,在机器学习模型的帮助下,包括情绪分析,文件分类,话题分类,文 ...
- SharePoint 2013 event id 8321 错误
SharePoint 2013里会报8321的错误: A certificate validation operation took 15011.1412 milliseconds and has e ...
- Windows Server 2008配置Network Load Balancing(服务群集)
最近配置SharePoint 2013 WFE 时,客户提到要让多台WFE能load balance,于是研究了下Network Load Balancing. 当把一台服务器 ...
- STM32外设地址查询
问题的提出 DMA传输SDIO驱动的SD卡的数据,其中外设地址的确定 问题的解决 打开数据参考手册,在存储器和总线架构一章存储器映像小节,有一个寄存器组起始地址表,列举所有外设对应的起始地址,再到相应 ...
- 爬虫json数据的处理
在爬网页的过程中,最喜欢遇到的就是json数据接口,省了不少麻烦,但是json数据也有多种格式. 类型一:标准的json result = json.loads(html.text),将str转成py ...