1. 概要

この短い記事では、配列とセットの間の変換について説明します。最初にプレーンjavaを使用し、次にGuavaとApacheのCommonsCollectionsライブラリを使用します。

この記事は、ここBaeldungの「Java –BacktoBasic」シリーズの一部です。

2. ArraySetに変換します

2.1. プレーンJavaの使用

まず、プレーンなJavaを使用して配列をセットに変換する方法を見てみましょう。

@Test
public void givenUsingCoreJavaV1_whenArrayConvertedToSet_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    Set<Integer> targetSet = new HashSet<Integer>(Arrays.asList(sourceArray));
}

または、 Set を最初に作成してから、配列要素を入力することもできます。

@Test
public void givenUsingCoreJavaV2_whenArrayConvertedToSet_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    Set<Integer> targetSet = new HashSet<Integer>();
    Collections.addAll(targetSet, sourceArray);
}

2.2. GoogleGuavaを使用する

次に、配列からSetへのGuava変換を見てみましょう。

@Test
public void givenUsingGuava_whenArrayConvertedToSet_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    Set<Integer> targetSet = Sets.newHashSet(sourceArray);
}

2.3. ApacheCommonsCollectionsの使用

最後に、ApacheのCommonsCollectionライブラリを使用して変換を行いましょう。

@Test
public void givenUsingCommonsCollections_whenArrayConvertedToSet_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    Set<Integer> targetSet = new HashSet<>(6);
    CollectionUtils.addAll(targetSet, sourceArray);
}

3. セットを配列に変換

3.1. プレーンJavaの使用

次に、その逆を見てみましょう–既存のセットを配列に変換する

@Test
public void givenUsingCoreJava_whenSetConvertedToArray_thenCorrect() {
    Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
    Integer[] targetArray = sourceSet.toArray(new Integer[0]);
}

toArray(new T [0])は、 toArray(new T [size])よりもこのメソッドを使用するための推奨される方法であることに注意してください。 AlekseyShipilëvが彼のブログ投稿で証明しているように、それはより速く、より安全で、よりクリーンに見えます。

3.2. グアバの使用

次へ– Guavaソリューション:

@Test
public void givenUsingGuava_whenSetConvertedToArray_thenCorrect() {
    Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
    int[] targetArray = Ints.toArray(sourceSet);
}

GuavaのInts APIを使用していることに注意してください。したがって、このソリューションは、使用しているデータ型に固有のものです。

4. 結論

これらすべての例とコードスニペットの実装は、Github にあります。これはMavenベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。