知っていると便利な章

4.5. Set

Collectionを拡張して要素の重複を「禁止する」インターフェースです。

『JDK7 API Javadoc より抜粋』---
重複要素のないコレクションです。
すなわち、セットは、e1.equals(e2)であるe1とe2の要素ペアは持たず、 null 要素を最大 1 つしか持ちません。 その名前が示すように、このインターフェースは数学で言う「集合」の抽象化をモデル化します。
---

以下のクラスは Set インターフェースを実装しています。

HashSet
ハッシュを使ったSetの実装です。
要素数によらない高速な検索が可能です。
ただし保持する要素の順序は保証しません。

LinkedHashSet
重複要素を保持しません。
また、要素の挿入順を保持します。

TreeSet
2分木の一種、Red-Black Treeを使ったSortedSetインターフェースの実装です。
保持する要素は、自然順序もしくはコンストラクタに指定された Comparatorに従って昇順にソートされます。

Setインターフェースを実装したそれぞれのクラスがどのように振る舞うか確認します。

int[] intArray = {5, 8, 2, 9, 1, 5};
for (int i : intArray) { 
    exSet.add(i);     // 要素を追加
} 
System.out.println(exSet); // 要素を表示

結果はこのようになります。

「5」は重複せず一つだけ保持されます。

『おまけ』 Red-Black Tree
二分検索木の実装の中で一番効率がいいらしい。
詳しいことはデータ構造に関する書籍やWebサイトを参照してみてください。

< 前のページへ

Pagetop