IT/Java

Arrays.asList() vs ArrayList()

김 정 환 2022. 12. 19. 14:04
반응형
반응형

 

리스트를 만들 때 주로 사용하는 두 가지 메소드에 대해서 살펴보겠습니다.

같을 것 같으면서도 다른 이 둘의 차이점을 주로 보겠습니다.

 

Arrays.asList()

배열을 고정된 리스트 객체로 만들어 주는 메소드 입니다.

단지 원본 배열을 감싸서 리스트로 만들기 때문에 데이터가 저장된 주소가 동일합니다. 그래서 복사되거나 새로 만들어지지 않습니다.

고정된 길이를 갖기 때문에 요소를 제거하거나 추가할 수 없습니다. 만약에 시도한다면 에러 메시지를 받습니다.

그러나 배열에 존재하는 요소를 변경할 수는 있습니다. Arrays.asList()로 만들어진 리스트의 요소를 변경한다면 원본 배열의 요소도 변경됩니다.

String[] stringArray = new String[] {"a", "b", "c", "d"};
List stringList = Arrays.asList(stringArray);

stringList.set(0, "A");

System.out.println(Arrays.toString(stringArray)); // [A, b, c, d]
System.out.println(stringList); // [A, b, c, d]

 

 

 

ArrayList()

이 메소드는 원본 배열을 복사하여 새로운 리스트 객체를 만들어 줍니다. 따라서 새로 만들어진 리스트 객체를 수정해도 원본 배열에 영향을 주지 않습니다. 그리고 요소를 추가하거나 제거할 수 있습니다.

String[] stringArray = new String[]{"a", "b", "c", "d"};
List stringList = new ArrayList<>(Arrays.asList(stringArray));

stringList.set(0, "A");

System.out.println(Arrays.toString(stringArray)); // [a, b, c, d]
System.out.println(stringList); // [A, b, c, d]
반응형

'IT > Java' 카테고리의 다른 글

Optional 클래스 사용  (0) 2023.01.08
Map 처리  (0) 2022.12.19
팩토리 패턴 (Factory Pattern)  (0) 2022.11.07
[함수형 데이터 처리] 스트림  (2) 2022.09.25
기본형과 참조형 변수  (0) 2022.09.04