java.util.HashSet int迭代顺序

时间:2013-06-27 12:18:07

标签: java

当我运行下面显示的代码时,输​​出为[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 个答案:

答案 0 :(得分:5)

Docs says

  

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

转到LinkedHashSet

答案 1 :(得分:5)

HashSet不维护广告订单。您需要的是LinkedHashSet

答案 2 :(得分:1)

HashSet课程不保证您输入数据的顺序。

如果您List放在HashSet中,而是继续List,您将获得添加值的顺序它

您可以使用LinkedHashSet来保留广告订单。

如果您想排序 List,那么您可以使用Collections.sort()。 (额外信息,如果您不需要,请忽略)

答案 3 :(得分:0)

来自doc

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