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

Java에서 LinkedList를 배열(Array)로 변환하는 방법 총정리

LinkedList를 배열로 변환하는 방법

LinkedList 클래스의 toArray() 메서드는 현재 LinkedList 객체를 Object 타입의 배열로 변환하여 반환합니다. 이 배열에는 리스트에 담긴 모든 요소가 첫 번째 요소부터 마지막 요소까지 원래 순서 그대로 포함됩니다. 즉, toArray()는 배열 기반 API와 컬렉션 기반 API 사이를 연결하는 다리 역할을 하는 메서드입니다.

따라서 LinkedList를 배열로 변환하려면 다음과 같은 단계를 거치면 됩니다.

  • LinkedList 클래스를 인스턴스화합니다.
  • add() 메서드를 사용해 리스트에 요소를 추가합니다.
  • 생성된 LinkedList 객체에 대해 toArray() 메서드를 호출하여 Object 배열을 반환받습니다.
  • Object 배열의 각 요소를 String 타입으로 형변환합니다.

예제 1: toArray() 메서드 사용하기

import java.util.Arrays;
import java.util.LinkedList;

public class LinkedListToArray {
   public static void main(String[] args) {
      LinkedList<String> list = new LinkedList<String>();
      // LinkedList 객체 생성 후 요소 추가
      list.add("JavaFX");
      list.add("Java");
      list.add("WebGL");
      list.add("OpenCV");
      list.add("OpenNLP");
      list.add("JOGL");
      list.add("Hadoop");
      list.add("HBase");
      list.add("Flume");
      list.add("Mahout");
      list.add("Impala");

      // toArray() 메서드로 Object 배열 얻기
      Object[] objectArray = list.toArray();
      int length = objectArray.length;
      String[] stringArray = new String[length];
      for(int i = 0; i < length; i++) {
         stringArray[i] = (String) objectArray[i];
      }
      System.out.println("배열의 내용: \n" + Arrays.toString(stringArray));
   }
}

실행 결과

배열의 내용:
[JavaFX, Java, WebGL, OpenCV, OpenNLP, JOGL, Hadoop, HBase, Flume, Mahout, Impala]

예제 2: toArray(T[] a)로 String 배열 직접 받기

번거로운 형변환 없이 더 간단하게 처리하고 싶다면 toArray() 메서드에 new String[0]을 인자로 전달하면 됩니다. 제네릭 버전인 toArray(T[] a) 메서드는 지정한 타입의 배열을 그대로 반환해 주며, 인자로 넘긴 배열의 크기가 리스트보다 작으면 자동으로 새 배열을 할당해 주기 때문에 new String[0]처럼 빈 배열을 넘겨도 안전합니다.

import java.util.Arrays;
import java.util.LinkedList;

public class LinkedListToArray {
   public static void main(String[] args) {
      LinkedList<String> list = new LinkedList<String>();
      // LinkedList 객체 생성 후 요소 추가
      list.add("JavaFX");
      list.add("Java");
      list.add("WebGL");
      list.add("OpenCV");
      list.add("OpenNLP");
      list.add("JOGL");
      list.add("Hadoop");
      list.add("HBase");
      list.add("Flume");
      list.add("Mahout");
      list.add("Impala");

      // new String[0]을 전달해 String 배열로 바로 변환
      String[] stringArray = list.toArray(new String[0]);
      System.out.println("배열의 내용: \n" + Arrays.toString(stringArray));
   }
}

실행 결과

배열의 내용:
[JavaFX, Java, WebGL, OpenCV, OpenNLP, JOGL, Hadoop, HBase, Flume, Mahout, Impala]

두 방식의 차이점 정리

  • toArray(): Object[]를 반환하므로 각 요소를 사용하려면 명시적인 형변환이 필요합니다.
  • toArray(new String[0]): String[]을 바로 반환하므로 형변환이 없어 코드가 간결하고 타입 안전성이 높습니다.

실무에서는 잘못된 형변환으로 인한 ClassCastException 발생 위험을 줄일 수 있는 두 번째 방식인 toArray(new String[0])을 사용하는 것이 권장됩니다.