一,java的接口跟C语言所能做到的相比确实是让人眼前一亮的东西。利用接口可以将多种东西放到一起,在编程过程中就能省略掉相同类的很多重复代码,将代码进行分类别的,统一的处理。

  二,java中的字符串处理,java中的字符串并不像C语言那样利用二维数组来进行操作,而是对应了String这个对象,可以用new的方法创建一个字符串对象,而这个字符串对象有很多方法可以直接调用,这样直接对对象进行操作,显得非常方便。
神奇的字符串操作方法
str.length()
str.indexOf(),indexOf有不同参数的方法调用,对应不同的方法。
str.equals("XXX")字符串比较方法,java中的字符串比较与c语言类似,不能够使用==进行比较
str.charAt(int num)
访问字符串对应num上的字符
StringBuffer是可以改变的字符串,可以用append()等String所没有的方法;
java对字符串的操作与C语言相比,因为已经有方法可以直接调用了,就像C语言别人已经把函数给你写好了,所以使用起来只需要调用就好了
  三,java中的容器,java中有很多的容器,容器在我理解来可以用来存放对象所使用的,老师所给的样例中所给是Vector容器,是一个向量类,可以动态调整数据大小,(这个向量似乎指的不是数学意义上的向量),其他的比如Linklist和Arraylist等,都是可以动态调整大小的,这是C语言所不具备的。而且向量类有很多方法,声明和使用起来都比较方便
 
 
前面写java程序的时候,老师很多会给出样例,写起来的时候感觉还可以,所以这次写字符串集合操作方法的时候,显得有些杂乱。
写Mystring类的时候还没有太大区别,直接就定义了一个stringlist向量容器,利用构造方法进行构造后,调用其它方法进行操作即可。但是当我尝试着将这些方法调用的时候,便会有很多细节反面不理解,eclipse进行相应的报错;
1,对很多量进行声明的时候,可能编程过程中规范不是很好,用了eclipse的自动纠正功能后,将我的代码中在main中定义的对象转化成类的属性并加上了static修饰,查阅了static相关资料后发现,static相当于全局变量,在main程序运行前已经存在,后来在main中重新写了相应的对象定义方法,注释掉了eclipse的自动纠正模块,所幸程序正常.
2.java迭代器的使用,是java容器的特点,能够更安全的对向量容器里面的内容进行遍历,但似乎本人目前还不会使用迭代器进行双重循环,所以仍然用.length()方法进行遍历。
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字符串集合的更多相关文章

  1. Java字符串String 集合的迭代器

    Java字符串String 我们知道Java的字符窜是Immutable(不可变)的,一旦创建就不能更改其内容了:平常我们对字符串的操作是最多的,其实对字符串的操作,返回的字符串都是新建的字符串对象, ...

  2. 【Java】集合_学习笔记

    一.集合 1.集合类也称容器类,主要负责保存.盛装其他数据. 2.集合可以保存数量不确定的数据,保存具有映射关系的数据(也称关联数组). 3.Java5后提供一些多线程安全的集合类,放在java.ut ...

  3. 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 print-all-combinations-of-given-length

    // 给定一个set字符和一个正数k,找出所有该做set它可以由长度构成k该字符串集合 /* Input: set[] = {'a', 'b'}, k = 3 Output: aaa aab aba ...

  4. Java之集合初探(一)

    一.集合概述.区别 集合是一种容器,数组也是一种容器 在Java编程中,装各种各样的对象(引用类型)的叫做容器. 为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的 ...

  5. 【JAVA零基础入门系列】Day6 Java字符串

    字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...

  6. java的集合框架set 和map的深入理解

    Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...

  7. Java面试集合(七)

    前言: Java面试集合(六) 的回顾,对于final可以修饰常量,方法,和类,一旦常量定义好后就不可改变,而方法,用final来修饰方法,方法不可重载,继承,重写,final用来修饰类,该类不能被继 ...

  8. Java面试集合(三)

    前言 大家好,给大家带来Java面试集合(三)的概述,希望你们喜欢 三 1.在Java中是否可以含有多个类? 答:可以含有多个类,但只有一个是public类,public类的类名与文件名必须一致. 2 ...

  9. Java面试集合(二)

    前言 大家好,给大家带来Java面试集合(二)的概述,希望你们喜欢 二 1.请问线程有哪些状态? 新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked ...

随机推荐

  1. Java中的浮点型(Double&Float)计算问题

    在刚刚做完的一个项目中,遇到了double型计算不精确的问题.到网上查找后,问题得到解决.经验共享,在这里总结一下. Java中的浮点数类型float和double不能够进行精确运算.这个问题有时候非 ...

  2. BZOJ2159 Crash的文明世界(树形dp+斯特林数)

    根据组合意义,有nk=ΣC(n,i)*i!*S(k,i) (i=0~k),即将k个有标号球放进n个有标号盒子的方案数=在n个盒子中选i个将k个有标号球放入并且每个盒子至少有一个球. 回到本题,可以令f ...

  3. BZOJ3505 CQOI2014数三角形(组合数学)

    显然可以用总方案数减掉三点共线的情况.对于三点共线,一个暴力的做法是枚举起点终点,其间整点数量即为横纵坐标差的gcd-1.这样显然会T,注意到起点终点所形成的线段在哪个位置是没有区别的,于是枚举线段算 ...

  4. MT【53】对数平均做数列放缩

    [从最简单的做起]--波利亚 请看下面三道循序渐进不断加细的题. 评:随着右边的不断加细,解决问题的方法也越来越"高端".当然最佳值$ln2$我们可以用相对 容易的方法来证明: $ ...

  5. 架构师成长之路4.4-多维监控体系_zabbix

    点击返回架构师成长之路 点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 架构师成长之路4.4-多维监控体系_zabbix 自学Zabbix之路[第 ...

  6. 【HDU1693】Eat the Trees(插头dp)

    [HDU1693]Eat the Trees(插头dp) 题面 HDU Vjudge 大概就是网格图上有些点不能走,现在要找到若干条不相交的哈密顿回路使得所有格子都恰好被走过一遍. 题解 这题的弱化版 ...

  7. WC 2019 记

    “在下一次挑战来临时,还能否有足够的勇气和力量重新提起这被震掉两次的剑呢?” 难得来参加一次$WC$,这是第一次来,也很有可能是最后一次了(我也好希望有下一次啊,哪怕这可能再渺小,如同浩瀚星空中一丝辰 ...

  8. luogu1600 [NOIp2016]天天爱跑步 (tarjanLca+dfs)

    经过部分分的提示,我们可以把一条路径切成s到lca 和lca到t的链 这样就分为向上的链和向下的链,我们分开考虑: 向上:如果某一个链i可以对点x产生贡献,那么有deep[x]+w[x]=deep[S ...

  9. JDK源码分析(5)Vector

    JDK版本 Vector简介 /** * The {@code Vector} class implements a growable array of * objects. Like an arra ...

  10. 【codeforces 768F】 Barrels and boxes

    http://codeforces.com/problemset/problem/768/F (题目链接) 题意 A,B两种物品可以装到栈中,每个栈只能存放一种物品,容量没有限制.现在讲所有栈排成一列 ...