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

时间:2013-02-15 03:50:23

标签: java sorting collections duplicates

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

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

5 个答案:

答案 0 :(得分:7)

使用Set!常见的实现是HashSetTreeSet。后者在实现SortedSet时保留了项目的顺序。

答案 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)

这是set

用法:

Collection collection = new HashSet();

答案 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,并且真的考虑从头做一个。