java.util.HashSetはハッシュを用いたjava.util.Setインターフェースの実装クラスになります。値の重複を許可しない集合を管理するためのクラスで、各要素の順序は保持しません。ただし、null値を設定することはできます。ListやMapとは違い、値に対してインデックスやキーを持たないため、主に集合に対して任意の値が含まれているかどうかを調べるといった使い方をします。
HashSetクラスの特長と主要メソッド
【クラスの特長】
クラス | 要素の重複 | nullの挿入 | 自動ソート |
java.util.HashSet |
不可 |
可 |
なし |
【クラスの主要メソッド】
戻り値 | メソッド | 説明 |
boolean |
add(Object e) |
セットに要素eを追加します。
要素eが既にセット内に存在する場合はfalseを返します。
|
void |
clear() |
セットの全ての要素を削除します。 |
boolean |
contains(Object e) |
セットに要素eが含まれているかを判定します。 |
boolean |
isEmpty() |
セットが空かどうかを判定します。 |
boolean |
remove(Object e) |
要素eをセットから削除します。
要素eがセット内に存在しない場合はfalseを返します。
|
int |
size() |
セットの要素数を返します。
|
HashSetを生成する
HashSetオブジェクトはnew演算子を使用して以下のように生成します。
【JDK1.5以降】
HashSet<型> 変数名 = new HashSet<型>();
上記方法での生成は、ジェネリクス機能が導入されたJ2SE5.0(JDK1.5)以降に可能です。それ以前の古いバージョンでは、以下の方法で生成します。
HashSet 変数名 = new HashSet();
HashSetにデータを追加する
HashSetオブジェクトにデータを追加する場合は、addメソッドを使用します。
HashSet<String> hs = new HashSet<String>();
hs.add("Google");
hs.add("Apple");
hs.add("Microsoft");
addメソッドはセットに該当の要素が含まれていない場合に要素を追加します。上記例ではHashSetオブジェクトに3つの要素が追加されますが、順序は保持されませんので、要素は必ずしも追加した順とはなりません。
HashSetに任意のデータが含まれているか調べる
HashSetオブジェクトに任意のデータが含まれているかどうかを調べる場合は、containsメソッドを使用します。
if (hs.contains("Apple")) {
System.out.println("セットにAppleは含まれます。");
}
containsメソッドはセットに指定の要素が含まれている場合にtrueを返します。
HashSetのデータを削除する
HashSetオブジェクトのデータを削除する場合は、removeメソッドを使用します。
hs.remove("Apple");
removeメソッドはセットに該当の要素が含まれている場合に要素を削除します。指定の要素が含まれていない場合はfalseを返します。
サンプルプログラム
以下サンプルではHashSetに複数の要素を格納し、格納した要素を標準出力に出力します。
import java.util.HashSet;
public static void main(String[] args) {
HashSet<String> hs = new HashSet<String>();
hs.add("Java");
hs.add("C#");
hs.add("PHP");
for (String val : hs){
System.out.println(val);
}
}
【実行結果】
PHP
C#
Java