JAVA

[JAVA] Arrays.asList

오선지♬ 2024. 8. 19. 19:52
728x90
반응형

Arrays.asList는 자바에서 배열을 List로 변환하는 유용한 메서드입니다. 이 메서드는 주로 배열을 리스트로 변환하여 리스트가 제공하는 다양한 기능을 사용하고자 할 때 사용됩니다.

Arrays.asList 메서드의 주요 특징

  1. 배열을 리스트로 변환: Arrays.asList(T... a) 메서드는 배열을 인자로 받아 해당 배열을 기반으로 하는 고정 크기의 List를 반환합니다. 이 리스트는 배열을 기반으로 하므로 리스트의 크기는 변경할 수 없지만, 배열의 요소는 변경할 수 있습니다.
  2. 고정 크기 리스트: Arrays.asList로 생성된 리스트는 고정된 크기를 가지며, 새로운 요소를 추가하거나 기존 요소를 제거할 수 없습니다. 이러한 작업을 시도하면 UnsupportedOperationException이 발생합니다.
  3. 원본 배열과 연결: Arrays.asList로 생성된 리스트는 원본 배열과 연결되어 있습니다. 따라서 리스트의 요소를 변경하면 원본 배열도 변경되고, 원본 배열을 변경하면 리스트의 요소도 변경됩니다.
import java.util.Arrays;
import java.util.List;

public class Example {
    public static void main(String[] args) {
        String[] fruitsArray = {"Apple", "Banana", "Cherry"};

        // 배열을 리스트로 변환
        List<String> fruitsList = Arrays.asList(fruitsArray);

        // 리스트의 요소를 변경
        fruitsList.set(0, "Mango");

        // 변경된 리스트와 배열을 출력
        System.out.println("List: " + fruitsList); // List: [Mango, Banana, Cherry]
        System.out.println("Array: " + Arrays.toString(fruitsArray)); // Array: [Mango, Banana, Cherry]

        // 고정 크기 리스트이므로 추가/삭제 시도 시 예외 발생
        // fruitsList.add("Orange"); // UnsupportedOperationException 발생
        // fruitsList.remove("Banana"); // UnsupportedOperationException 발생
    }
}

 

주의사항

  • Arrays.asList로 생성된 리스트는 크기가 고정되어 있기 때문에, 리스트에 요소를 추가하거나 제거하려고 하면 UnsupportedOperationException이 발생합니다.
  • Arrays.asList로 생성된 리스트는 배열의 뷰(View)로 동작하기 때문에, 리스트의 내용을 변경하면 원본 배열도 함께 변경됩니다.

ArrayList로 변환하기

고정 크기 리스트가 아닌, 요소 추가/삭제가 가능한 리스트가 필요하다면 Arrays.asList로 생성된 리스트를 ArrayList 생성자에 전달하여 새로운 리스트를 만들어야 합니다.

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

public class Example {
    public static void main(String[] args) {
        String[] fruitsArray = {"Apple", "Banana", "Cherry"};

        // 배열을 리스트로 변환하고 ArrayList로 생성
        List<String> fruitsList = new ArrayList<>(Arrays.asList(fruitsArray));

        // 요소 추가 가능
        fruitsList.add("Orange");

        System.out.println("List: " + fruitsList); // List: [Apple, Banana, Cherry, Orange]
    }
}
728x90
반응형

'JAVA' 카테고리의 다른 글

[JAVA] Arrays.asList와 contains 메서드  (0) 2024.08.21
[JAVA] Stream API anyMatch()  (0) 2024.08.20
[JAVA] DateTimeFormatter  (0) 2024.06.22
[JAVA] StringBuilder.deleteCharAt()  (0) 2024.06.16
[JAVA] StringUtils.chop()  (0) 2024.06.15