我将arraylist中的唯一元素转换为hashset,但它本身正在排序。但是我需要数据不按排序顺序。如何才能完成?
答案 0 :(得分:4)
HashSet已排序
HashSet
的项目根本没有特定的顺序,正如其javadoc中明确说明的那样:
它不保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。
也许你的意思是说这些项目按照与添加项目不同的顺序“重新排列”并且这是不可取的。
在这种情况下,只需使用LinkedHashSet
代替HashSet
。它按插入顺序维护元素。
Set<T> unique = new LinkedHashSet<T>(arrayList);
或许,如果您更喜欢基于元素Comparable#compareTo()
实现的自动排序,或者想要提供自定义Comparator
,那么请改用TreeSet
。
Set<T> uniqueAndSorted = new TreeSet<T>(arrayList);
答案 1 :(得分:0)
“我希望数据不按排序顺序”是什么意思?你的意思是说你想要它在列表中的相同顺序吗? 如果是这样,您可以创建LinkedHashSet并添加arraylist中的条目。
例如:
ArrayList list = new ArrayList();
LinkedHashSet set = new LinkedHashSet();
for(String temp:list){
set.add(温度);
}
这将确保元素在arraylist中的顺序相同。