可重排的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,并且真的考虑从头开始做一个。