哈希集输出不匹配[JAVA]
代码从文件中读取并生成哈希集,然后输出到控制台 我的代码输出与预期输出不匹配。 我的java代码是 Main.java哈希集输出不匹配[JAVA],java,collections,hashset,Java,Collections,Hashset,代码从文件中读取并生成哈希集,然后输出到控制台 我的代码输出与预期输出不匹配。 我的java代码是 Main.java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class Main { pub
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader brf = new BufferedReader(new FileReader("calllog.txt"));
Set<String> phoneNumberList = new HashSet<String>();
String read = "";
while ((read = brf.readLine()) != null) {
String[] callList = read.split(",");
String in = callList[0];
phoneNumberList.add(in); //add(new CallLog(callList[0], startTime, endTime));
}
brf.close();
Iterator<String> itr = phoneNumberList.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
我的输出
9123456789
9764318520
0422-201430
8123456789
预期产出
8123456789
9764318520
0422-201430
9123456789
HashSet
没有顺序,因此您没有理由期望元素的特定顺序
如果希望根据插入顺序对元素进行排序,可以使用LinkedHashSet
,但这会给您
8123456789
9123456789
0422-201430
9764318520
这不是您期望的顺序。输出系统依赖于还是jdk依赖?@Ankussingh在不同的jdk版本中可能会有所不同,因为它取决于HashMap/HashSet的内部实现。它不仅依赖于jdk,还依赖于
HashSet
的内部状态。考虑,这表明相同的元素可以有不同的排序。@安迪,我可以通过实现我自己的HASCODE()来改变输出的顺序。只是wondering@Ankush实现哈希代码并不会减少未定义的顺序。它可能会改变观察到的迭代顺序,但不是以有意义或可靠的方式。