Java で ArrayList を Set に変換する
- Java でナイーブなアプローチを使用して ArrayList を HashSet に変換する
- Java のコンストラクターを使用して ArrayList を HashSet に変換する
- Java 8 Stream API を使用して ArrayList を HashSet に変換する
-
Java で
Set.copyOf()
メソッドを使用して ArrayList を HashSet に変換する - Java の Apache Commons Collection ライブラリを使用して、ArrayList を HashSet に変換する
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 で ArrayList のオブジェクトを日付でソートする方法
- Java ArrayList で一意の値を見つける
- Java の Vector と ArrayList
- Java のリストと Arraylist の違い
- Java で ArrayLists を比較する
- Java で ArrayList を int 型配列に変換する