如何在java中限制Hash Set的默认排序

San*_*nan 2 java collections set

我的java程序中有一些值.我只是存储了这些值HashSet.我通过for循环存储它.在形成集合之后,循环迭代的值已被不同地排序.如何HashSet从循环中限制此顺序更改.有人可以帮我吗?

ass*_*ias 10

如果希望set保持插入顺序,可以使用LinkedHashSet:

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

或者,如果要对集进行排序,可以使用TreeSet.

  • 或者TreeSet,如果你想自然地订购它. (2认同)

ami*_*mit 5

A HashSet是无序的,因为javadocs指定:

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

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

另一种方法是使用其中一种NavigableSet实现,例如TreeSet根据自然顺序保证顺序,或者Comparator如果给出.