본문으로 건너뛰기

Java 두개의 ArrayList 합치기

두개의 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]