new HashSet<>() / セット.add() / contains() / remove()
| 対応: | Java 1.2(1998) |
|---|
セット(集合)は重複する要素を持たないコレクションです。『HashSet』は最も一般的なセット実装で、要素の順序は保証されません。挿入順を保持したい場合は『LinkedHashSet』、要素を自然順序で保持したい場合は『TreeSet』を使用します。
構文
// HashSet を作成します Set<型> セット名 = new HashSet<>(); // 挿入順を保持するセットを作成します Set<型> セット名 = new LinkedHashSet<>(); // 昇順で並べるセットを作成します Set<型> セット名 = new TreeSet<>(); // 要素を追加します(重複は無視されます) セット.add(要素); // 要素が含まれているか確認します セット.contains(要素); // 要素を削除します セット.remove(要素);
メソッド一覧
| メソッド・クラス | 概要 |
|---|---|
| new HashSet<>() | ハッシュテーブルに基づくセットを作成します。要素の順序は保証されません。 |
| new LinkedHashSet<>() | 挿入順序を保持するセットを作成します。 |
| new TreeSet<>() | 要素を自然順序(昇順)で保持するセットを作成します。 |
| add(E e) | 指定した要素を追加します。既に存在する場合は追加せず false を返します。 |
| contains(Object o) | 指定した要素が含まれているか確認し、boolean 型で返します。 |
| remove(Object o) | 指定した要素を削除します。削除できた場合は true を返します。 |
サンプルコード
sample_HashsetAddContains.java
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
class HashsetAddContains {
public static void main(String[] args) {
// HashSet を作成して要素を追加します
Set<String> crew = new HashSet<>();
crew.add("真島吾朗");
crew.add("桐生一馬");
crew.add("秋山駿");
crew.add("真島吾朗");
System.out.println(crew.size()); // 『3』と出力されます。
// 要素の存在確認をします
System.out.println(crew.contains("桐生一馬")); // 『true』と出力されます。
System.out.println(crew.contains("錦山彰")); // 『false』と出力されます。
// 要素を削除します
crew.remove("桐生一馬");
System.out.println(crew.contains("桐生一馬")); // 『false』と出力されます。
// LinkedHashSet は挿入順を保持します
Set<String> ordered = new LinkedHashSet<>();
ordered.add("真島吾朗");
ordered.add("桐生一馬");
ordered.add("秋山駿");
System.out.println(ordered); // 『[真島吾朗, 桐生一馬, 秋山駿]』と出力されます。
// TreeSet は自然順序(昇順)で保持します
Set<String> sorted = new TreeSet<>();
sorted.add("真島吾朗");
sorted.add("桐生一馬");
sorted.add("秋山駿");
System.out.println(sorted); // 自然順序(昇順)で出力されます。
}
}
HashsetAddContains.java
javac HashsetAddContains.java java HashsetAddContains 3 true false false [真島吾朗, 桐生一馬, 秋山駿] [桐生一馬, 真島吾朗, 秋山駿]
概要
『HashSet』は重複する要素を自動的に除外するコレクションです。要素の順序は保証されないため、順序が重要な場合は『LinkedHashSet』または『TreeSet』を使用してください。
『add()』は要素を追加し、重複する要素を追加しようとした場合は false を返します。『contains()』はリストの線形探索(O(n))と異なりハッシュテーブルを使うため、O(1) の高速な検索が可能です。
セットのサイズ取得や反復処理については『size() / isEmpty() / iterator()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。