Java講座

知っていると便利な章
4.5. Set
Collectionを拡張して要素の重複を「禁止する」インターフェースです。

『JDK1.4 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 = 0; i < intArray.length; i++) { 
    exSet.add(new Integer(intArray[i])); // 要素を追加
} 
System.out.println(exSet); // 要素を表示
結果はこのようになります。

Set 要素の並び 備考
HashSet 2, 9, 8, 1, 5 (ランダム) 順序は保証されないので
並びは不定
TreeSet 1, 2, 5, 8, 9 昇順に並ぶ
LinkedHashSet 5, 8, 2, 9, 1 追加した順に並ぶ

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

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

当ページ・当社へのご意見やご感想があればお手数ですが「お問い合わせ」までお願いいたします。
当社への就職をお考えの方は「採用情報ページ」までお願いいたします。
C言語を学びたい方は「C言語講座」もどうぞ。