我正在搜索sortable(我的意思是在初始化之后进行排序,并且多次使用Comparator)Java类集合没有重复。是否有更纯粹的解决方案,而不是编写不透明的代码,并阻止例如某些ArrayList添加另一个具有相同值的对象?
编辑1: 我应该补充一些关于排序的解释。我需要使用不同的比较器(实现的多样性)多次对这组值进行排序。
答案 0 :(得分:7)
答案 1 :(得分:6)
Set Interface---->SortedSet Interface----->TreeSet Class
Set Interface---->HashSet Class
Set Interface---->LinkedHashSet Class
您可以使用TreeSet
。它将删除重复项。
TreeSet
实现SortedSet
接口,以便对输入的元素进行排序
SortedSet s=new TreeSet();
s.add(12);
s.add(12);
s.add(1);
s.add(56);
s.add(6);
s.add(47);
s.add(1);
System.out.println(s);
<强>输出强>
[1, 6, 12, 47, 56]
答案 2 :(得分:1)
将 Set 用于唯一元素。您始终可以使用 Collections.sort()对您使用的任何集合进行排序
答案 3 :(得分:0)
答案 4 :(得分:0)
最好扩展标准集合或从头开始实现。例如:
class SetList<E> extends ArrayList<E> {
boolean add(E e) {
if (contains(e)) {
return false;
} else {
super.add(e);
return true;
}
}
void add(int index, E e) { .. }
void addAll(..) {..}
void addAll(..) {..}
}
然后你已经如前所述得到了Collections.sort
。我想要仔细检查一切 - 我可以想象库方法对SetList做出错误的假设,因为它扩展了ArrayList,导致了灾难。首先阅读ArrayList,List和Collection的javadocs,并且真的考虑从头做一个。