java.util.hashset int迭代顺序

java.util.HashSet int iteration order

本问题已经有最佳答案,请猛点这里访问。

当我运行下面显示的代码时,输出是[50、20、5、40、10、30]。我不明白这个命令。为什么输出不是[10,5,20,30,40,50]?

1
2
List list = Arrays.asList(10, 5, 10, 20, 30, 40, 50);
System.out.println(new HashSet(list));


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


医生说

This class implements the Set interface, backed by a hash table (actually a HashMap instance). It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will remain constant over time. This class permits the null element.

去linkedhashset


一类一阶HashSet不担保和你有同样的位置数据。

如果你不把你的ListHashSet和而不是继续与你想得到的List阶中添加值,你是在它。

你可以使用一阶LinkedHashSet保持插入。

如果你想,然后你可以使用sort the ListCollections.sort()。额外的信息,如果你不需要它)


从DOC

是没有保证的。java.util.hashset阶的迭代集合;特别是,它不需要保持恒定,这令担保过的时间。