List<String>을 String[]으로 변환하는 방법

**List<String>**을 **String[]**로 변환하려면, List 객체의 toArray 메소드를 사용하면 된다. 아래 예제에서는 List<String> 객체를 **String[]**로 변환하는 방법을 보여준다.

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

public class Main {
    public static void main(String[] args) {
        List<String> stringList = new ArrayList<>();
        stringList.add("one");
        stringList.add("two");
        stringList.add("three");

        String[] stringArray = stringList.toArray(**new String[0]**);

        // 결과 확인
        for (String s : stringArray) {
            System.out.println(s);
        }
    }
}

잠깐, toArray에 new String[0]을 넣어주는 이유는?

**new String[0]**을 toArray 메소드에 전달하는 이유는 반환되는 배열의 타입을 지정하고, 메소드가 적절한 크기의 배열을 자동으로 생성하도록 하는 것이다.

toArray 메소드는 파라미터로 전달된 배열이 충분한 크기일 때 해당 배열에 리스트의 요소를 담아 반환한다. 그러나 전달된 배열의 크기가 충분하지 않은 경우에는, 메소드가 리스트의 요소를 담을 수 있는 적절한 크기의 새 배열을 생성하고 반환한다.

**new String[0]**을 전달할 때, 크기가 0인 배열이므로 toArray 메소드는 리스트의 크기에 맞는 새 배열을 생성하게 된다. 이렇게 하면 코드가 간결해지고, 리스트의 크기에 대한 추가 계산이 필요하지 않는다.

다음과 같이 리스트의 크기를 사용하여 배열을 생성하고 전달할 수도 있지만, 이 방법은 불필요한 추가 계산을 포함하게 된다.

String[] stringArray = stringList.toArray(**new String[stringList.size()]**);

대부분의 경우에 **new String[0]**을 사용하는 것이 더 간결하고 효율적이다.

최근 Java 버전에서는 JVM 최적화가 있어 **new String[0]**을 사용하는 것이 성능상의 이점도 가질 수 있다.