두개의 List, ArrayList를 하나의 리스트로 합치는 방법입니다.
1. List.addAll()
list1.addAll(list2)
는 list1에 list2의 모든 요소를 추가합니다.
아래와 같이 두개의 리스트를 하나로 합칠 수 있습니다.
import java.util.ArrayList;
import java.util.Arrays;
public class Example {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>(Arrays.asList("a", "b"));
ArrayList<String> list2 = new ArrayList<>(Arrays.asList("1", "2"));
list1.addAll(list2);
System.out.println(list1);
}
}
Output:
[a, b, 1, 2]
1.1 새로운 리스트에 합치기
위의 예제는 기존 리스트에 다른 리스트의 요소를 추가했는데, 만약 새로운 리스트에 두개 리스트의 모든 요소들을 합치고 싶다면 아래와 같이 구현할 수 있습니다.
import java.util.ArrayList;
import java.util.Arrays;
public class Example {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>(Arrays.asList("a", "b"));
ArrayList<String> list2 = new ArrayList<>(Arrays.asList("1", "2"));
ArrayList<String> result = new ArrayList<>();
result.addAll(list1);
result.addAll(list2);
System.out.println(result);
}
}
Output:
[a, b, 1, 2]
2. Collections.addAll()
Collections.addAll(list, elements)
는 list에 elements를 추가합니다.
elements는 아래와 같이 추가할 항목들을 나열하거나
Collections.addAll(list, "a", "b", "c", "d")
아래와 같이 리스트를 배열로 변환하여 전달해야 합니다.
Collections.addAll(list, otherList.toArray(new String[0]))
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Example {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>(Arrays.asList("a", "b"));
ArrayList<String> list2 = new ArrayList<>(Arrays.asList("1", "2"));
ArrayList<String> result = new ArrayList<>();
Collections.addAll(result, list1.toArray(new String[0]));
Collections.addAll(result, list2.toArray(new String[0]));
System.out.println(result);
Collections.addAll(result, "A", "B");
System.out.println(result);
}
}
Output:
[a, b, 1, 2]
[a, b, 1, 2, A, B]
3. Stream
Stream의 concat()
, collect()
를 이용하여 두개의 리스트를 하나의 리스트로 변환할 수 있습니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Example {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>(Arrays.asList("a", "b"));
ArrayList<String> list2 = new ArrayList<>(Arrays.asList("1", "2"));
List<String> result = Stream.concat(list1.stream(), list2.stream())
.collect(Collectors.toList());
System.out.println(result);
}
}
Output:
[a, b, 1, 2]