Java -Set-
Setの利用
Setは、ユニーク(重複のない)値のコレクションです。
メソッド | 説明 | |
---|---|---|
boolean | add(E e) | 指定された要素がセット内になかった場合、セットに追加します。 |
void | clear() | セットからすべての要素を削除します。 |
boolean | contains(Object o) | セットが、指定された要素を保持している場合に true を返します。 |
Iterator<E> | iterator() | セット内の各要素についての反復子を返します。 |
boolean | remove(Object o) | 指定された要素がセット内にあった場合、セットから削除します 。 |
int | size() | セット内の要素数を返します。 |
Object[] | toArray() | セット内のすべての要素が格納されている配列を返します。 |
<T> T[] | toArray(T[] a) | セット内のすべての要素を格納している配列を返します。 |
String型のSetの例
Set <String> set = new HashSet <String> ();
※ArrayList同様にコレクションフレームワークを利用する場合は、このようにインタフェースで受けることが一般的です。
HashSet サンプル1
import java.util.HashSet;
import java.util.Set;
public class SetSample1 {
public static void main(String[] args) {
Set<String> set=new HashSet<String>();
set.add("東京");
set.add("大阪");
set.add("福岡");
set.add("大阪");
for(String item:set){
System.out.println(item);
}
}
}
実行結果
大阪 東京 福岡
※ 大阪を重複で登録できません。
Set実装クラスの機能比較
Setの代表各は、HashSetです。
これに対して、LinkedHashSetは格納順を覚えているSetです。
また、TreeSetは、自然順序など何らかの順序で整列しているSetです。
Setサンプル2-1(HashSetの場合)
import java.util.HashSet;
import java.util.Set;
public class SetSample2_1 {
public static void main(String[] args) {
Set<String> set=new HashSet<String>();
set.add("お");
set.add("え");
set.add("う");
set.add("い");
set.add("あ");
for(String str:set){
System.out.println(str);
}
}
}
実行結果
う い あ お え ※ 出力結果はランダムになります。
Setサンプル2-2(LinkedHashSetの場合)
import java.util.LinkedHashSet;
import java.util.Set;
public class SetSample2_2 {
public static void main(String[] args) {
Set<String> set=new LinkedHashSet<String>();
set.add("お");
set.add("え");
set.add("う");
set.add("い");
set.add("あ");
for(String str:set){
System.out.println(str);
}
}
}
実行結果
お え う い あ ※ 出力結果は入力順になります。
Setサンプル2-3(TreeSetの場合)
import java.util.Set;
import java.util.TreeSet;
public class SetSample2_3 {
public static void main(String[] args) {
Set<String> set=new TreeSet<String>();
set.add("お");
set.add("え");
set.add("う");
set.add("い");
set.add("あ");
for(String str:set){
System.out.println(str);
}
}
}
実行結果
あ い う え お ※ 出力結果は辞書順になります。