Set
* 重複がないコレクション
利点 / 使いどころ
* Listと比較して、パフォーマンスがいい (以下の参考文献のサンプルを実行させれば分かるが速度は明らかに違う)http://d.hatena.ne.jp/greennoah/20090114/1231936654
http://mosamosaatama.blogspot.jp/2010/02/arraylisthashsethashmapcontains.html
注意
* Listのようにget(0)やget(3)などにより、値を直接取得することができない (ループで回すか、配列に変更してから取得することになる) * 要素の重複は不可
Setの種類
HashSet
* 要素にnullを使用可能 * 保持する要素の順序は保証されない
TreeSet
* 要素にnullを使用不可
LinkedHashSet
* 要素の挿入される挿入順を保持される
EnumSet
* Enum用のSet(詳細は、以下の関連記事を参照のこと)列挙型 / enum型 ~応用編 / EnumMap / EnumSet ~
http://blogs.yahoo.co.jp/dk521123/34469119.html
Setあれこれ
■ Set <=> Listに変換するには
# List -> Set Set sampleSet = new HashSet(list); # Set -> List List sampleList = new ArrayList(set); # 以下でもできる。 # # sampleList.addAll(set);
■ 読み取り専用(Readonly)のSetにするには
* 「Collections.unmodifiableSet」「Collections.unmodifiableSortedSet」を使用するSet<String> readonlySets = Collections.unmodifiableSet(sampleSet);http://docs.oracle.com/javase/jp/6/api/java/util/Collections.html
参考文献
API仕様
http://docs.oracle.com/javase/jp/6/api/java/util/Set.htmlその他
http://www.javaroad.jp/java_collection3.htm* 他のコレクションとの比較や構造が図にしてあって分かりやすい
http://java-reference.sakuraweb.com/java_collection_compare.html