当我运行如下所示的代码时,输出为 [50, 20, 5, 40, 10, 30]。我不明白这个命令。为什么输出不是 [10, 5, 20, 30, 40, 50] ?
List list = Arrays.asList(10, 5, 10, 20, 30, 40, 50);
System.out.println(new HashSet(list));
当我运行如下所示的代码时,输出为 [50, 20, 5, 40, 10, 30]。我不明白这个命令。为什么输出不是 [10, 5, 20, 30, 40, 50] ?
List list = Arrays.asList(10, 5, 10, 20, 30, 40, 50);
System.out.println(new HashSet(list));
HashSet
不维护插入顺序。你需要的是一个LinkedHashSet
.
该类HashSet
不保证您输入数据的顺序。
如果你不把你List
的HashSet
,而是继续,List
你会得到你在其中添加值的顺序。
您可以使用LinkedHashSet
来保持插入顺序。
如果要排序,List
则可以使用Collections.sort()
. (额外信息,不需要的请忽略)
从文档
Java.util.HashSet 不保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。