Java で ArrayList を Set に変換する

Mohammad Irfan 2023年10月12日
  1. Java でナイーブなアプローチを使用して ArrayList を HashSet に変換する
  2. Java のコンストラクターを使用して ArrayList を HashSet に変換する
  3. Java 8 Stream API を使用して ArrayList を HashSet に変換する
  4. Java で Set.copyOf() メソッドを使用して ArrayList を HashSet に変換する
  5. Java の Apache Commons Collection ライブラリを使用して、ArrayList を HashSet に変換する
Java で ArrayList を Set に変換する

ArrayList は、データを線形順序で格納するために使用される List インターフェイスの実装クラスですが、set は、データを格納するための HashSet クラスを持つインターフェイスです。これら 2つの主な違いは、HashSet は重複要素を許可せず、一意の要素を格納することです。

このチュートリアルでは、ArrayList を HashSet に変換するためのさまざまなアプローチを紹介します。

Java でナイーブなアプローチを使用して ArrayList を HashSet に変換する

これは、リストをセットに変換するための最も基本的なアプローチです。

このアプローチでは、最初に空のセットを宣言します。次に、リストをループし、HashSet.add() メソッドを使用してその要素を 1つずつセットに追加します。ループが終了すると、リストはセットに変換されます。

以下のコードを見てください。

import java.util.*;
public class SimpleTesting {
  public static void main(String args[]) {
    // initialise a list
    List<String> list =
        Arrays.asList("Karan", "Rahul", "Jay", "Laxman", "Praful", "Kushagra", "Karan");
    // intialise a set
    Set<String> set = new HashSet<String>();
    // apply for loop
    for (String ele : list) {
      set.add(ele);
    }
    // display the set
    for (String ele : set) {
      System.out.println(ele);
    }
  }
}

出力:

Rahul
Kushagra
Jay
Karan
Laxman
Praful

上記のコードでは、いくつかの名前を格納するリストを作成しました。また、set という名前の空の Set を初期化します。

次に、リストをループし、その要素を追加して 1つずつ設定します。最後に、セットの要素を出力します。リスト内の重複する要素がどのように削除されるかに注意してください。

Java のコンストラクターを使用して ArrayList を HashSet に変換する

このアプローチは、すべてのアプローチの中で最も単純です。このアプローチでは、HashSet クラスのコンストラクターに変換する必要のあるリストを渡します。

これにより、前のアプローチで必要だった for ループが不要になります。コンストラクターは、すべての一意の要素を持つ新しいセットを返します。

以下のコードを見てください。

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class SimpleTesting {
  public static void main(String args[]) {
    // initialise a list
    List<String> list =
        Arrays.asList("Karan", "Rahul", "Jay", "Laxman", "Praful", "Kushagra", "Karan");
    // intialise a set
    Set<String> set = new HashSet<String>(list);

    // display the set
    for (String ele : set) {
      System.out.println(ele);
    }
  }
}

出力:

Rahul
Kushagra
Jay
Karan
Laxman
Praful

上記のコードでは、いくつかの名前を格納するリストを作成します。また、set という名前の空の Set を初期化します。

リストを引数として HashMap のコンストラクターに渡します。最後に、セットの要素を出力します。リスト内の重複する要素がどのように削除されるかに注意してください。

Java 8 Stream API を使用して ArrayList を HashSet に変換する

このアプローチでは、Java 8 StreamAPI を使用して ArrayList を HashSet に変換しました。まず、リストをストリームに変換しました。次に、collect 関数をストリームに適用します。

セットに変換するために、collect 操作で Collectors.toSet() 関数を使用してセットを取得しました。以下のコードを見てください。

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class SimpleTesting {
  public static void main(String args[]) {
    // initialise a list
    List<String> list =
        Arrays.asList("Karan", "Rahul", "Jay", "Laxman", "Praful", "Kushagra", "Karan");
    // intialise a set using stream
    Set<String> set = list.stream().collect(Collectors.toSet());

    // display the set
    for (String ele : set) {
      System.out.println(ele);
    }
  }
}

出力:

Rahul
Kushagra
Jay
Karan
Laxman
Praful

上記のコードの List.stream() 関数を使用して、リストをストリームに変換しました。collect 操作をストリームに適用し、Collectors.toSet() メソッドを引数として渡します。

これにより、ストリームがセットに変換されます。次に、このセットを変数セットに格納します。

Java で Set.copyOf() メソッドを使用して ArrayList を HashSet に変換する

Java 10 は、コレクションを引数として受け取り、指定されたコレクションの要素を含む不変のセットを返す Set.copyof() メソッドを提供します。このアプローチでは、Set.copyOf() メソッドを使用して ArrayList を HashSet に変換します。

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class SimpleTesting {
  public static void main(String args[]) {
    // initialise a list
    List<String> list =
        Arrays.asList("Karan", "Rahul", "Jay", "Laxman", "Praful", "Kushagra", "Karan");
    // intialise a set
    Set<String> set = Set.copyOf(list);
    // display the set
    for (String ele : set) {
      System.out.println(ele);
    }
  }
}

出力:

Rahul
Kushagra
Jay
Karan
Laxman
Praful

Java の Apache Commons Collection ライブラリを使用して、ArrayList を HashSet に変換する

Apache Commons Collection ライブラリを使用している場合は、ターゲットコレクションオブジェクトとソースコレクションオブジェクトの 2つの引数を取る CollectionUtils.addAll() メソッドを使用します。

ソースコレクションオブジェクトの値がターゲットコレクションオブジェクトにコピーされ、セットが作成されます。以下のコードを見てください。

このコードは、Apache Commons ライブラリの依存関係コードを使用します。まず、この依​​存関係を Java プロジェクトに追加して、このコードを正常に実行します。

<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.2</version>
</dependency>
import java.util.*;
public class SimpleTesting {
  public static void main(String args[]) {
    // initialise a list
    List<String> sourcelist =
        Arrays.asList("Karan", "Rahul", "Jay", "Laxman", "Praful", "Kushagra", "Karan");
    // intialise a set
    Set<String> targetset = new HashSet<String>();
    // Adding elements
    CollectionUtils.addAll(targetset, sourcelist);
    // display the set
    for (String ele : targetset) {
      System.out.println(ele);
    }
  }
}

出力:

Rahul
Kushagra
Jay
Karan
Laxman
Praful

関連記事 - Java ArrayList

関連記事 - Java Set