Programming/JAVA

[JAVA] Arrays.asList()

잇나우 2020. 9. 17. 19:22
반응형

Arrays.asList

Arrays.asList의 패키지는 java.util.Arrays로 보통의 사용하던 java.util.ArrayListArrayList와는 다르다. java.util.Arrays의 ArrayList 클래스는 remove(), add() 메소드를 제공하지 않고 set(), get(), contains()를 제공한다. 배열에 엘리먼트를 추가하거나 삭제할 수 없어서 배열의 사이즈를 변경할 수 없다.

Array를 List 처럼 사용할 수 있게 도와주는 클래스

String[] strs = {"apple", "banana", "orange"};

// List<> list = new ArrayList<>(); 대신 사용이 가능하다.
List<String> list = Arrays.asList(strs);

strs[0] += "_bad"  // 배열 첫번째 엘리먼트 값 뒤에 "_bad"를 추가
list.set(1, list.get(1) + "_good");   // 1번째 엘리먼트에 뒤에 "_good"값을 추가

// 출력
> ["apple_bad", "banana_good", "orange"]

Arrays.asList의 간단한 사용법은 new ArrayList()를 대신하여 사용할 수 있다. 위의 코드와 주석에서 알 수 있듯이 strs 배열을 .asList를 이용하여 List 형태로 변환 하였는데 배열의 0번째 값과 List의 1번째 값을 변경하였을때 이 둘을 모두 출력하면 위 코드와 같이 모두 변경된 배열이 출력이 된다. List의 내부 구조는 배열로 되어있는데 .asList를 이용하여 List의 객체를 만들면 원본 배열의 주소값을 가져오게 된다. 그래서 List의 값을 변경해도 배열의 값이 변경 되는 것이다.

만약 ArrayList와 같이 값을 추가하고 제거하여 사이즈 변경을 하고 싶을 경우 아래와 같이 사용할 수 있다.

List<String> list = new ArrayList<>(Arrays.asList(strs));

list.add("tomato");

위 코드와 같이 사용할 경우 .add()remove()와 같은 메소드를 사용하여 값을 추가, 제거할 수 있으며 기존 배열의 주소값을 가져오는 것이 아니라 새로운 배열의 객체를 만들어서 사용하여 값이 독립적이다.

반응형