Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)에서 두 개의 리스트(List)를 결합하는 방법


이 글에서는 자바(Java)에서 두 개의 리스트(List)를 하나로 결합하는 방법을 알아봅니다. ArrayList 클래스는 AbstractList를 상속하고 List 인터페이스를 구현하며, 필요에 따라 크기가 자동으로 늘어나는 동적 배열(dynamic array)을 지원합니다.

ArrayList는 초기 크기를 지정해 생성할 수 있으며, 저장되는 요소가 지정된 크기를 초과하면 컬렉션이 자동으로 확장됩니다. 반대로 요소를 삭제하면 내부 배열의 크기가 줄어들기도 합니다.

그럼 실제 예제를 통해 두 리스트를 결합하는 과정을 살펴보겠습니다.

입력값

첫 번째 리스트: [Java, Python]
두 번째 리스트: [Mysql, Redshift]

기대 출력 결과

두 리스트를 결합한 결과: [Java, Python, Mysql, Redshift]

알고리즘

STEP 1 - 시작
STEP 2 - 두 개의 리스트 input_list_1과 input_list_2를 선언한다.
STEP 3 - 각 리스트에 값을 정의한다.
STEP 4 - join_lists() 함수에 두 리스트를 매개변수로 전달해 결합한다.
STEP 5 - 결과를 화면에 출력한다.
STEP 6 - 종료

예제 1: main() 메서드에서 직접 결합하기

첫 번째 예제는 모든 연산을 main() 메서드 안에서 처리하는 방식입니다. ArrayList의 addAll() 메서드를 호출해 한 리스트의 모든 요소를 결과 리스트에 순서대로 추가합니다.

import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<String> input_list_1 = new ArrayList<String>();
        input_list_1.add("Java");
        input_list_1.add("Python");
        System.out.println("첫 번째 리스트: " + input_list_1);

        List<String> input_list_2 = new ArrayList<String>();
        input_list_2.add("Mysql");
        input_list_2.add("Redshift");
        System.out.println("두 번째 리스트: " + input_list_2);

        List<String> result_list = new ArrayList<String>();
        result_list.addAll(input_list_1);
        result_list.addAll(input_list_2);
        System.out.println("두 리스트를 결합한 결과: " + result_list);
    }
}

출력 결과

첫 번째 리스트: [Java, Python]
두 번째 리스트: [Mysql, Redshift]
두 리스트를 결합한 결과: [Java, Python, Mysql, Redshift]

예제 2: 객체 지향 방식으로 함수에 캡슐화하기

두 번째 예제는 리스트 결합 로직을 별도의 함수(join_lists())로 분리해 객체 지향 프로그래밍 스타일로 작성했습니다. 이렇게 하면 코드의 재사용성과 가독성이 크게 향상됩니다.

import java.util.ArrayList;
import java.util.List;

public class Demo {
    static void join_lists(List<String> input_list_1, List<String> input_list_2) {
        List<String> result_list = new ArrayList<String>();
        result_list.addAll(input_list_1);
        result_list.addAll(input_list_2);
        System.out.println("두 리스트를 결합한 결과: " + result_list);
    }

    public static void main(String[] args) {
        List<String> input_list_1 = new ArrayList<String>();
        input_list_1.add("Java");
        input_list_1.add("Python");
        System.out.println("첫 번째 리스트: " + input_list_1);

        List<String> input_list_2 = new ArrayList<String>();
        input_list_2.add("Mysql");
        input_list_2.add("Redshift");
        System.out.println("두 번째 리스트: " + input_list_2);

        join_lists(input_list_1, input_list_2);
    }
}

출력 결과

첫 번째 리스트: [Java, Python]
두 번째 리스트: [Mysql, Redshift]
두 리스트를 결합한 결과: [Java, Python, Mysql, Redshift]

참고: 자바 8 스트림(Stream) API로 결합하기

자바 8 이상 환경이라면 Stream.concat()과 Collectors.toList()를 조합해 더 간결하게 두 리스트를 결합할 수도 있습니다.

List<String> result = Stream.concat(input_list_1.stream(), input_list_2.stream())
        .collect(Collectors.toList());