ホーム > Java > 第11章-4 Set

Java -Set-

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);
        }
    }
}
実行結果




出力結果は辞書順になります。