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

자바(Java)에서 배열(Array)을 ArrayList로 변환하는 3가지 방법

자바 개발을 하다 보면 정적인 배열(Array)을 동적으로 요소를 추가·삭제할 수 있는 ArrayList로 변환해야 하는 상황이 자주 발생합니다. 이 글에서는 대표적인 세 가지 변환 방법과 각각의 예제 코드, 그리고 어떤 상황에서 어떤 방법을 선택하는 것이 좋은지까지 살펴보겠습니다.


1. 배열의 각 요소를 하나씩 추가하기 (add() 메서드)

ArrayList 클래스가 제공하는 add() 메서드는 인자로 전달된 요소를 리스트 끝에 추가합니다. 이 메서드와 반복문을 조합하면 배열을 ArrayList로 손쉽게 변환할 수 있습니다.

  • 변환할 배열을 준비합니다.

  • 빈 ArrayList 객체를 생성합니다.

  • 반복문으로 배열의 각 요소를 ArrayList에 하나씩 추가합니다.

  • 완성된 ArrayList의 내용을 출력합니다.

예제 코드

import java.util.ArrayList;
import java.util.Iterator;
public class ArrayToArrayList {
    public static void main(String args[]) {
        String stringArray[] = {"JavaFX", "Java", "WebGL", "OpenCV", "OpenNLP", "JOGL", "Hadoop", "HBase", "Flume", "Mahout", "Impala"};
        ArrayList<String> arrayList = new ArrayList<String>();
        for(int i = 0; i < stringArray.length; i++) {
            arrayList.add(stringArray[i]);
        }
        System.out.println("ArrayList의 내용:");
        Iterator it = arrayList.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

실행 결과

ArrayList의 내용:
JavaFX
Java
WebGL
OpenCV
OpenNLP
JOGL
Hadoop
HBase
Flume
Mahout
Impala

2. Arrays.asList() 메서드 사용하기

Arrays 클래스의 asList() 메서드는 배열을 인자로 받아 해당 배열을 기반으로 하는 List 객체를 반환합니다. 다만 이렇게 얻은 리스트는 고정 크기(fixed-size)이므로, 요소를 자유롭게 추가·삭제하려면 새로운 ArrayList의 생성자에 전달하여 감싸 주어야 합니다.

  • 변환할 배열을 준비합니다.

  • 배열을 인자로 전달하여 asList() 메서드를 호출하고 List 객체를 얻습니다.

  • 앞 단계에서 얻은 List 객체를 생성자에 전달해 ArrayList를 인스턴스화합니다.

  • ArrayList의 내용을 출력합니다.

예제 코드

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class ArrayToArrayList {
    public static void main(String args[]) {
        String stringArray[] = {"JavaFX", "Java", "WebGL", "OpenCV", "OpenNLP", "JOGL", "Hadoop", "HBase", "Flume", "Mahout", "Impala"};
        List<String> list = Arrays.asList(stringArray);
        ArrayList<String> arrayList = new ArrayList(list);
        System.out.println("ArrayList의 내용:");
        Iterator it = arrayList.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

실행 결과

ArrayList의 내용:
JavaFX
Java
WebGL
OpenCV
OpenNLP
JOGL
Hadoop
HBase
Flume
Mahout
Impala

3. Collections 클래스의 addAll() 메서드 사용하기

Collections 유틸리티 클래스의 addAll() 메서드는 리스트 객체와 배열을 매개변수로 받아, 배열의 모든 요소를 한 번에 리스트에 추가합니다. 반복문 없이 한 줄로 처리할 수 있어 코드가 매우 간결합니다.

  • 변환할 배열을 준비합니다.

  • 빈 ArrayList 객체를 생성합니다.

  • ArrayList와 배열을 인자로 전달하며 Collections.addAll() 메서드를 호출합니다.

  • 완성된 ArrayList의 내용을 출력합니다.

예제 코드

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class ArrayToArrayList {
    public static void main(String args[]) {
        String stringArray[] = {"JavaFX", "Java", "WebGL", "OpenCV", "OpenNLP", "JOGL", "Hadoop", "HBase", "Flume", "Mahout", "Impala"};
        ArrayList<String> arrayList = new ArrayList();
        Collections.addAll(arrayList, stringArray);
        System.out.println("ArrayList의 내용:");
        Iterator it = arrayList.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

실행 결과

ArrayList의 내용:
JavaFX
Java
WebGL
OpenCV
OpenNLP
JOGL
Hadoop
HBase
Flume
Mahout
Impala

어떤 방법을 선택해야 할까?

세 가지 방법 모두 결과는 동일하지만, 상황에 따라 적합한 선택이 달라집니다.

  • add() + 반복문: 요소를 추가하면서 별도의 로직(필터링, 변환 등)을 함께 처리해야 할 때 유용합니다.

  • Arrays.asList(): 가장 간결하게 작성할 수 있지만, 반환되는 리스트가 고정 크기라는 점을 반드시 유의해야 합니다. 수정 가능한 리스트가 필요하다면 반드시 새 ArrayList로 감싸 주세요.

  • Collections.addAll(): 반복문 없이 한 줄로 처리할 수 있으며, 내부적으로 최적화되어 있어 성능 면에서도 효율적입니다. 일반적으로 가장 권장되는 방식입니다.

프로젝트의 요구 사항과 코드 스타일에 맞는 방법을 선택해 사용하시기 바랍니다.