我正在搜索可排序的(我的意思是在初始化后排序并多次使用 Comparator)Java 类集合,没有重复。有没有比编写不透明的代码更纯粹的解决方案,例如阻止一些 ArrayList 添加另一个具有相同值的对象已经存在?
编辑1:我应该添加一些关于排序的解释。我需要使用不同的比较器(实现的多样性)多次对这组值进行排序。
我正在搜索可排序的(我的意思是在初始化后排序并多次使用 Comparator)Java 类集合,没有重复。有没有比编写不透明的代码更纯粹的解决方案,例如阻止一些 ArrayList 添加另一个具有相同值的对象已经存在?
编辑1:我应该添加一些关于排序的解释。我需要使用不同的比较器(实现的多样性)多次对这组值进行排序。
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]
将Set用于唯一元素。您始终可以使用Collections.sort()对您使用的任何集合进行排序
最好扩展一个标准集合或从头开始实现一个。例如:
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,然后真正考虑从头开始做一个。