2

我的 java 程序中有一些值。我只是将这些值存储在HashSet. 我已经通过for循环存储了它。在集合形成后,循环迭代的值的顺序不同。HashSet当我从循环中获得时,如何限制这种顺序变化。任何人都可以帮助我吗?

4

3 回答 3

10

如果您希望集合保持插入顺序,可以使用LinkedHashSet

Set 接口的实现,具有可预测的迭代顺序。此实现与 HashSet 的不同之处在于它维护一个双向链表,该列表贯穿其所有条目。这个链表定义了迭代顺序,也就是元素插入集合的顺序(insertion-order)

或者,如果您希望您的集合被订购,您可以使用TreeSet

于 2012-08-20T11:52:20.113 回答
5

AHashSet是无序的,正如javadocs所指定的:

它不保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。此类允许空元素。

您可能需要考虑使用 a LinkedHashSet,它维护插入的顺序。

另一种方法是使用其中一种NavigableSet实现,例如TreeSetwhich 保证根据自然顺序的顺序,或者Comparator,如果给定的话。

于 2012-08-20T11:52:38.723 回答
3

使用LinkedHashSet可预测的迭代顺序

于 2012-08-20T11:53:15.590 回答