5

当我运行如下所示的代码时,输​​出为 [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));
4

4 回答 4

5

文档说

该类实现了由哈希表(实际上是 HashMap 实例)支持的 Set 接口。它不保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。此类允许空元素。

LinkedHashSet

于 2013-06-27T12:19:46.280 回答
5

HashSet不维护插入顺序。你需要的是一个LinkedHashSet.

于 2013-06-27T12:20:02.990 回答
1

该类HashSet不保证您输入数据的顺序。

如果你把你ListHashSet,而是继续,List你会得到你在其中添加值的顺序。

您可以使用LinkedHashSet来保持插入顺序。

如果要排序List则可以使用Collections.sort(). (额外信息,不需要的请忽略)

于 2013-06-27T12:22:11.593 回答
0

文档

Java.util.HashSet 不保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。

于 2013-06-27T12:19:14.077 回答