【Java】Listの結合について(addAllメソッドで連結)
javaのListを結合する場合は、addAllメソッドを使用します。
addAll(List): Listを結合する
gaddAll(List)を使用すると、Listを結合することができます。
List<String> list1= new ArrayList <>(Arrays.asList("2", "1", "3"));
List<String> list2= new ArrayList <>(Arrays.asList("3", "5", "4"));
list1.addAll(list2);
System.out.println(list1);
//実行結果
[2, 1, 3, 3, 5, 4]
実行結果のとおり、Listが結合されることが確認できました。
また、3は数値として重複していますが、重複が排除されること無く残っています。
結合したListの重複を排除する方法
Setのコレクションを使用する場合
Setのコレクションを使用することで重複を排除することができます。ただし、Listの順序が変わることもあるため、順序を保持する必要がない場合はSetをしようすればよいです。
List<String> list1= new ArrayList <>(Arrays.asList("2", "1", "3"));
List<String> list2= new ArrayList <>(Arrays.asList("3", "5", "4"));
list1.addAll(list2);
System.out.println(list1);
Set<String> set = new HashSet<>();
for(String str : list1) {
set.add(str);
}
// SetをListに変換
list1 = new ArrayList<String>(set);
System.out.println(list1);
//実行結果
[2, 1, 3, 3, 5, 4]
[1, 2, 3, 4, 5]
上記の例の場合は、
[2, 1, 3, 3, 5, 4] ➡ [1, 2, 3, 4, 5]といった形で順序が変わります。containsメソッドを使用する方法
順序を保つ場合は、要素を取り出しcontainsメソッドですでにListに値を含む場合は重複を排除すれば良いです。
List<String> list1= new ArrayList <>(Arrays.asList("2", "1", "3"));
List<String> list2= new ArrayList <>(Arrays.asList("3", "5", "4"));
List<String> list3= new ArrayList <>();
list1.addAll(list2);
System.out.println(list1);
for(String str : list1) {
// 追加したListに値を含む場合は追加しない
if (!list3.contains(str)) {
list3.add(str);
}
}
System.out.println(list3);
//実行結果
[2, 1, 3, 3, 5, 4]
[2, 1, 3, 5, 4]
[2, 1, 3, 3, 5, 4] ➡ [2, 1, 3, 5, 4]といった形で順序を保ち重複を排除できました。








コメントを残す