import java.util.*;
public class SetTest {
public static void main(String[] args){
Set<String> words = new HashSet<>();
long totalTime = 0;
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String word = in.next();
long callTime= System.currentTimeMillis();
words.add(word);
callTime = System.currentTimeMillis() - callTime;
totalTime += callTime;
}
Iterator<String> iter =words.iterator();
for(int i= 0 ; i != 20 && iter.hasNext(); i++)
System.out.println(iter.next());
System.out.println("...");
System.out.println(words.size() + " distinct words "+totalTime + "milliseconds.");
}
}
学习HashSet的结构,在书中看到的代码
然后 按照书中的运行 java SetTest > alice30.txt
运行失败,提示没有运行成功,所以查资料,发现是java的环境没有搭好
解决的网站
按照这里搭建成功
途中学习到Run AS configurations的arguments可以添加main的输入
在指定文件夹点击shift,可以打开让命令行直接进入该文件夹
代码中的知识点
1.Scanner类
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
使用
Scanner s = new Scanner(System.in);
Scanner 类的 next() 与 nextLine() 方法获取 输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
next 和 nextLine
next是省略空格,读取字符(类似c++的cin>>)
nextLine是读取行如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
demo
2.HashSet
1.是一个保存元素的容器,但是不允许有相同个元素,插入,删除效率高
定义
Set<String> names = Hash<>();
添加元素
name.add("yhq");
使用迭代器遍历
Iterator iter = name.iterator();
while(iter.hasNext){
System.out.println(iter.next());
}