Javaでのリストとセット間の変換

Javaでのリストとセット間の変換

1. 概要

この短い記事では、the conversion between a List and a Setについて見ていきます。PlainJavaから始めて、Guavaを使用し、最後にApache Commons Collectionsライブラリを使用します。

この記事は、例としてここのthe “Java – Back to Basic” seriesの一部です。

参考文献:

Javaを使用してリスト内の要素を見つける方法

Javaのリストで要素を見つける簡単な方法を見てください。

Javaでのコレクションのシャッフル

Javaでさまざまなコレクションをシャッフルする方法を学びます。

Javaで2つのリストが等しいかどうかを確認する

2つのListインスタンスにまったく同じ順序で同じ要素が含まれているかどうかをテストするという一般的な問題に焦点を当てた短い記事です。

2. ListSetに変換します

2.1. プレーンJavaを使用

from a List to a Set using Javaの変換から始めましょう:

public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() {
    List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5);
    Set targetSet = new HashSet<>(sourceList);
}

ご覧のとおり、各コレクションのコンストラクターは別のコレクションをソースとして受け入れるため、変換プロセスはタイプセーフで非常に簡単です。

2.2. With Guava

Guavaを使用して同じ変換を行いましょう。

public void givenUsingGuava_whenListConvertedToSet_thenCorrect() {
    List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
    Set targetSet = Sets.newHashSet(sourceList);
}

2.3. ApacheCommonsCollectionsを使用

次に、Commons Collections APIを使用して、ListSetの間で変換してみましょう。

public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() {
    List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
    Set targetSet = new HashSet<>(6);
    CollectionUtils.addAll(targetSet, sourceList);
}

3. SetListに変換します

3.1. プレーンJavaを使用

逆変換を行いましょう–from a Set to a List – using Java

public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() {
   Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
   List targetList = new ArrayList<>(sourceSet);
}

3.2. グアバと

そして、グアバのソリューション:

public void givenUsingGuava_whenSetConvertedToList_thenCorrect() {
    Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
    List targetList = Lists.newArrayList(sourceSet);
}

Javaのアプローチと非常によく似ていますが、コードの複製が少し少なくなります。

3.3. ApacheCommonsCollectionsを使用

最後に、SetListの間で変換するCommonsCollectionsソリューションは次のとおりです。

public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() {
    Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
    List targetList = new ArrayList<>(6);
    CollectionUtils.addAll(targetList, sourceSet);
}

4. 結論

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