HashSet 正在排序

SDa*_*Das 3 java hashset

我正在将数组列表中的唯一元素放入哈希集中,但它是自行排序的。但我需要数据不按排序顺序。怎么办?

Bal*_*usC 5

HashSet 正在排序

a 的项目HashSet根本没有特定的顺序,如其javadoc中明确指出的:

它不保证集合的迭代顺序;特别是,它不保证顺序随着时间的推移保持不变。

也许您的意思是,这些项目“重新排列”的顺序与您添加项目的顺序不同,这是不希望的。

在这种情况下,只需使用LinkedHashSet而不是HashSet. 它按插入顺序维护元素。

Set<T> unique = new LinkedHashSet<T>(arrayList);
Run Code Online (Sandbox Code Playgroud)

或者,如果您更喜欢基于元素Comparable#compareTo()实现的自动排序或想要提供自定义Comparator,请改用 a TreeSet

Set<T> uniqueAndSorted = new TreeSet<T>(arrayList);
Run Code Online (Sandbox Code Playgroud)

也可以看看: