2

I am getting the unique elements from a arraylist into a hashset but it is being sorted by itself.But i need the data not to be in sorted order.How can it be done?

4

2 回答 2

4

HashSet 得到排序

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

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

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

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

Set<T> unique = new LinkedHashSet<T>(arrayList);

或者,也许,如果您更喜欢基于元素Comparable#compareTo()实现的自动排序,或者想要提供一个 custom Comparator,那么使用 aTreeSet代替。

Set<T> uniqueAndSorted = new TreeSet<T>(arrayList);

也可以看看:

于 2012-11-20T13:32:29.297 回答
0

'我想要不按排序顺序的数据'是什么意思?你的意思是说你想要它在列表中出现的相同顺序吗?如果是这样,您可以创建一个 LinkedHashSet 并添加来自 arraylist 的条目。

例如:ArrayList list = new ArrayList(); LinkedHashSet set = new LinkedHashSet(); for (String temp: list) { set.add(temp);
}

这将确保元素在 arraylist 中出现的顺序相同。

于 2012-11-20T14:46:05.043 回答