HashSet正在排序

时间:2012-11-20 08:59:39

标签: java hashset

我将arraylist中的唯一元素转换为hashset,但它本身正在排序。但是我需要数据不按排序顺序。如何才能完成?

2 个答案:

答案 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中的顺序相同。