3

ソート可能な(つまり、初期化後にコンパレータを使用して何度もソートする)重複のない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。重複を削除します。

TreeSetSortedSet入力された要素をソートするようにインターフェイスを実装します

        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 の javadoc を読み、ゼロから作成することを実際に検討してください。

于 2014-07-08T15:04:03.257 に答える
0

これはセットです。

利用方法:

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