Javaでのリストとセット間の変換
1. 概要
この短い記事では、the conversion between a List and a Setについて見ていきます。PlainJavaから始めて、Guavaを使用し、最後にApache Commons Collectionsライブラリを使用します。
この記事は、例としてここのthe “Java – Back to Basic” seriesの一部です。
参考文献:
Javaで2つのリストが等しいかどうかを確認する
2つのListインスタンスにまったく同じ順序で同じ要素が含まれているかどうかをテストするという一般的な問題に焦点を当てた短い記事です。
2. ListをSetに変換します
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を使用して、ListとSetの間で変換してみましょう。
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. SetをListに変換します
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を使用
最後に、SetとListの間で変換する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ベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。