MENU

【Java】コレクションについてまとめてみた。(Set)

こんにちは。くまごろーです。
今日は先日の記事に続いて、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 参考