3

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

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

4

5 回答 5

7

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

于 2013-02-15T03:52:06.113 回答
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]
于 2013-02-15T03:56:34.610 回答
1

Set用于唯一元素。您始终可以使用Collections.sort()对您使用的任何集合进行排序

于 2013-02-15T05:51:26.473 回答
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,然后真正考虑从头开始做一个。

于 2014-07-08T15:04:03.257 回答
0

这是一套

用法:

Collection collection = new HashSet();
于 2013-02-15T03:54:58.323 回答