我的 java 程序中有一些值。我只是将这些值存储在HashSet
. 我已经通过for循环存储了它。在集合形成后,循环迭代的值的顺序不同。HashSet
当我从循环中获得时,如何限制这种顺序变化。任何人都可以帮助我吗?
问问题
763 次
3 回答
10
如果您希望集合保持插入顺序,可以使用LinkedHashSet:
Set 接口的实现,具有可预测的迭代顺序。此实现与 HashSet 的不同之处在于它维护一个双向链表,该列表贯穿其所有条目。这个链表定义了迭代顺序,也就是元素插入集合的顺序(insertion-order)。
或者,如果您希望您的集合被订购,您可以使用TreeSet。
于 2012-08-20T11:52:20.113 回答
5
AHashSet
是无序的,正如javadocs所指定的:
它不保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。此类允许空元素。
您可能需要考虑使用 a LinkedHashSet
,它维护插入的顺序。
另一种方法是使用其中一种NavigableSet
实现,例如TreeSet
which 保证根据自然顺序的顺序,或者Comparator
,如果给定的话。
于 2012-08-20T11:52:38.723 回答
3
使用LinkedHashSet可预测的迭代顺序
于 2012-08-20T11:53:15.590 回答