[JAVA] Arrays.asList vs List.of()의 차이

    Arrays.asList vs List.of()의 차이 알아보기

    1. Array.asList

    String[] array = {"apple", "banana", "orange"};
    List<String> list = Arrays.asList(array);

    이 경우, Arrays.asList()는 배열의 각 요소를 List의 요소로 추가합니다. 이 메서드는 배열과 List 간의 양방향 연결(뷰)을 생성하며, 배열이나 List 중 어느 한 쪽이 변경되면 다른 쪽에도 반영됩니다.

    Arrays.asList()로 생성된 List는 가변 리스트이므로 크기를 변경할 수있다.

    2. List.of()

    List<String> list = List.of("apple", "banana", "orange");

    List.of() 메서드는 Java 9에서 추가된 메서드로, 지정된 요소로 구성된 불변 리스트를 만듭니다. 예를 들어, 다음과 같이 List를 만들 수 있습니다. 이 경우, List.of()는 지정된 요소를 포함하는 새로운 불변 리스트를 생성합니다. 이 리스트는 크기를 변경할 수 없습니다. 또한, 이 메서드는 가변 인수를 사용하여 쉽게 List를 만들 수 있습니다.

    List.of()로 생성된 List는 불변 리스트이므로 크기를 변경할 수 없습니다.

    3. Array.asList List.of()차이점은?

    1. 생성 방법의 차이

    Arrays.asList() 메서드는 배열을 List로 변환합니다. 즉, Arrays.asList() 메서드를 사용하면 배열을 List로 간단하게 변환할 수 있습니다. 이 메서드는 배열과 List 간의 양방향 연결(뷰)을 생성하며, 배열이나 List 중 어느 한 쪽이 변경되면 다른 쪽에도 반영됩니다. 하지만, 이 메서드로 생성된 List는 크기를 변경할 수 없습니다.

    반면에 List.of() 메서드는 Java 9에서 추가된 메서드로, 지정된 요소로 구성된 불변 리스트를 만듭니다. 즉, List.of() 메서드로 생성된 List는 크기를 변경할 수 없습니다. 또한, 이 메서드는 가변 인수를 사용하여 쉽게 List를 만들 수 있습니다.

    2. 불변성의 차이

    Arrays.asList()로 생성된 List는 양방향 연결(뷰)을 통해 원래 배열에 대한 변경 사항을 List에서 볼 수 있습니다. 즉, List는 원래 배열에 대한 참조를 유지하므로 원래 배열이 변경되면 List에 반영됩니다. 하지만, List.of()로 생성된 List는 불변 리스트이므로 변경할 수 없습니다. 따라서, List.of()로 생성된 List는 원래 요소의 변경 사항을 수용하지 않습니다.

    3. Null 요소 처리 방법의 차이

    Arrays.asList() 메서드는 null 요소를 허용하지만, List.of() 메서드는 요소로 null 값을 허용하지 않습니다. 만약 null 값을 포함하는 List가 필요하다면, Arrays.asList()를 사용해야 합니다.

      List.of Array.asList
    삽입 불가 불가
    삭제 불가 불가
    변경 불가 가능
    Null 허용여부 허용X 허용X
    각 원소에 대한 Null 허용여부 허용X 허용

    댓글

    Designed by JB FACTORY