こんにちは。くまごろーです。
今日は先日の記事に続いて、Javaのコレクションの1つ、「Set」についてまとめようと思います。
1 Setとは?
Setとは、要素を順番付けしないで管理するデータ構造で、以下の特徴がある。
(1)それぞれの要素には、重複が許されない。
Setクラスはadd()メソッドを呼び出すことで要素を格納できるが、重複した値を格納しようとすると、無視される。
(2)set()やget()がない
Setクラスには要素同士に順序がないので、「〇番目」という概念がない。そのため、インデックスを使用した操作は行えない。(要素はIteratorや拡張for構文で取得する)
(3)1つずつ取り出す場合の順序は不明
Setの要素には、基本的に順序関係がない。よって拡張for文やイテレータを使用してセットの中身を1つずつ取り出す場合、どのような順序で要素が取り出せるかはわからない。
2 Setで使用するメソッド(Setインターフェースで使用できるメソッド)
メソッド | 意味 | 戻り値 |
---|---|---|
<要素格納> | ||
add(要素) | セットに要素を追加 | boolean |
<セットの調査> | ||
size() | 格納されている要素数を返す | int |
isEmpty() | 要素数がゼロであるかを判定 | boolean |
contains(要素) | 指定要素が含まれているか判定 | boolean |
<要素を削除> | ||
clear() | 要素をすべて削除する | void |
remove(要素) | 指定した内容の要素を削除 | boolean |
<その他> | ||
iterator() | 要素を順に処理するイテレータを返す | iterator<要素> |
※ 要素取り出しのメソッドは無い
3 Setクラスのバリエーション
「HashSet」と「TreeSet」の2種類がある。それぞれ、以下のような特徴がある。
(1) HashSet
・順序は保証されていない。
・nullを扱うことができる。
(2)TreeSet
・自然順序付けで整列する。
※ 例えば、String型の文字列をTreeSetに格納すると、辞書順で取り出すことができる。
・nullを扱うことができない。
4 参考