java中的Set,里面存储的元素应该是不可重复的,但是我有一个60多w行的文本文件,已知里面有一些行是重复的,但是我将这些行全部存到Set时,竟然将重复的行也存进去了,看了Set源码也没找出问题,大牛们帮忙出来解答一下这个疑惑:
BufferedReader br = null;
Set stringSet = new HashSet<>();
List list = new ArrayList<>();
int insertCount = 0, insertNum = 0;
String nick = null;
try {
br = new BufferedReader(new FileReader("Newnick.txt"));
while ((nick = br.readLine()) != null) {
++insertCount;
if (stringSet.add(nick)) {
++insertNum;
}
}
System.out.println("总量: " + insertCount);
System.out.println("去重后的量: " + insertNum);
System.out.println("set size: " + stringSet.size());
br.close();
}catch (Exception e) {
e.printStackTrace();
}
上面的代码输出结果如下:
总量: 674479
去重后的量: 674479
set size: 674479
文件下载地址: http://qbzw2vq1c.bkt.clouddn.com/Newnick.txt