4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Java】 HashSetの使い方ガイド | 初心者向けチュートリアル

Last updated at Posted at 2023-06-04

はじめに

HashSetはJavaのコレクションの一種で、重複のない要素の集まりを表現します。
配列に似ていますが、順番を持たないため一意の値を入れることしかできません。
たとえば、果物の種類を格納する場合は、重複する要素は自動的に取り除かれることが大きな特徴です。

HashSetの基本的な使い方

HashSetを使用するために必要なimport文を追加し、インスタンスを生成します

import java.util.HashSet;
import java.util.Set;

class Sample {
    public static void main(String[] args) {
      
       //String型の要素を格納するHashSetのインスタンスを作成する場合
       //Set<型> 変数名 = new HashSet<型>();
      Set<String> set = new HashSet<String>();
    }
}

要素を追加する

Set<String> set = new HashSet<String>();

set.add("apple");
set.add("banana");
set.add("orange");

//例外は発生しないが、すでに値が保存されているため追加で保存されない
set.add("banana");

ashSetは重複する要素を自動的に削除します。つまり、同じ要素を複数回追加しても最終的には1つの要素しか残りません。

要素の存在を確認する

// 指定値が存在すればtrueを返却する
// 指定値が存在しない場合falseを返却する

if (set.contains("apple")) { 
    System.out.println("HashSetにはappleが含まれています。");
}

コレクションの中身を一括で複数確認する

Set<Integer> set = new HashSet<Integer>();
set.add(1); // [1]
set.add(2); // [1, 2]
set.add(3); // [1, 2, 3]
set.add(4); // [1, 2, 3, 4]
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
// [1, 2]の全てが含まれています
set.containsAll(list); // true
// listに要素を追加
list.add(150);
// [1, 2, 150]の内、100が含まれていません
set.containsAll(list); // false

要素を削除する

set.remove("banana");

配列に変換する

Set<Integer> set = new HashSet<Integer>();
set.add(1); // [1]
set.add(2); // [1, 2]
set.add(3); // [1, 2, 3]
// 配列に変換して返却します
// set.sizeはHashSetに保存した要素の数を返します。
Integer[] array = set.toArray(new Integer[set.size()]); // {1, 2, 3}

要素を保持しているか確認する

Set<Integer> set = new HashSet<Integer>();

//要素を保持しない場合はtrue
set.isEmpty(); // true

//保持している場合はfalse
set.add(100);
set.isEmpty(); // false

拡張for文による繰り返し

Set<String> set = new HashSet<String>();

set.add("apple");
set.add("bananas");
set.add("grapes");

// { }内の処理に入る度にvalueに要素が代入されます
// HashSetは順番を持たないため、実行するたびに順番は前後する場合があります

for (String value : set) {
    System.out.print(value + " ");
}

// 出力結果 bananas grapes apple

forEach文による繰り返し

Set<String> set = new HashSet<String>();
set.add("apple");
set.add("bananas");
set.add("grapes");

// valueに要素が入る
set.forEach(value -> {
    System.out.println(value);
});

// 出力結果
// apple
// bananas
// grapes

まとめ

HashSetは重複要素のない集合を扱うためのコレクションです。
重複要素を自動的に削除するため、必ず一意の要素のみを格納することができます。
また、高速なデータ操作が可能ですが、要素の順序は保証されません。

詳細な使い方や応用的な使用例については、記事を通じて詳しく解説しています。お役に立てれば幸いです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?