可重排的Java集合,没有重复项

我正在搜索sortable(我的意思是在初始化后排序,很多次使用Comparator)Java类集合没有重复。 是否有更纯粹的解决方案,而不是编写不透明的代码,并阻止例如某些ArrayList添加另一个具有相同值的对象?

编辑1:我应该添加一些关于排序的解释。 我需要使用不同的比较器(实现的多样性)多次对这组值进行排序。

使用套装 ! 常见的实现是HashSet和TreeSet 。 后者在实现SortedSet时保留了项的顺序。

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()对您使用的任何集合进行排序

这是一套 。

用法:

 Collection collection = new HashSet(); 

最好扩展标准集合或从头开始实现。 例如:

 class SetList extends ArrayList { 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,并且真的考虑从头开始做一个。