java.util.Arrays.ArrayList 클래스는 remove(), add()메서드(Method)를 제공하지 않고 set(), get(), contains() 메서드(Method)를 가지고 있지만 원소를 추가하는 메서드는 가지고 있지 않기 때문에 사이즈를 바꿀 수 없다.
Java
위에 소스를 보면 lst에 담겨있는 두 번째 인덱스에 데이터를 수정했는데 원본 배열의 데이터까지 변경이 됐다.
@DisplayName("Mutable list이므로 list의 각 요소를 변경할 수 있고, 변경이 원본 array에 반영됨")@TestvoidmutableList(){// 생성된 list의 각 element를 변경할 수 있다.List<Integer> list1 =Arrays.asList(1,2,3,4);// 배열을 asList로 초기화 list1.set(1,1000);// assertThat(list1.get(1)).isEqualTo(1000);// 생성된 list의 변경이 원본 array에 반영된다.Integer[] array =newInteger[]{1,2,3};List<Integer> list2 =Arrays.asList(array); list2.set(0,1000);assertThat(array[0]).isEqualTo(1000);}
importjava.util.List;importjava.util.ArrayList;importjava.util.Arrays;publicclassTestArrayAsList{publicstaticvoidmain(String[] args){String[] strs ={"alpha","beta","charlie"};// 배열 선언System.out.println(Arrays.toString(strs));// [alpha, beta, charlie] List<String> lst =Arrays.asList(strs);// new ArrayList<String>(); 대신에 사용System.out.println(lst);// [alpha, beta, charlie] lst.add("ttt");// error : asList()로 List를 생성하면 원소를 새롭게 추가할 수 없음 strs[0]+="88"; lst.set(2, lst.get(2)+"99");// 2번째 인덱스 원소를 가져와 99를 덧붙이고 2번째 인덱스에 완성된 charlie99 넣음System.out.println(Arrays.toString(strs));// [alpha88, beta, charlie99] System.out.println(lst);// [alpha88, beta, charlie99]// Initialize a list using an array List<Integer> lstInt =Arrays.asList(22,44,11,33);System.out.println(lstInt);// [22, 44, 11, 33] }}
List<String> list =newArrayList<String>(Arrays.asList(arr));// List로 업캐스팅
packageTest;importjava.util.List;importjava.util.ArrayList;importjava.util.Arrays;publicclassTestArrayAsList{publicstaticvoidmain(String[] args){String[] strs ={"alpha","beta","charlie"};System.out.println(Arrays.toString(strs));// [alpha, beta, charlie] List<String>lst =newArrayList<String>(Arrays.asList(strs));System.out.println(lst);// [alpha, beta, charlie] lst.add()"ttt");// 이제는 에러가 나지 않고 데이터를 추가 시킬 수 있다.// Changes in array or list write thru strs[0]+="88"; lst.set(2, lst.get(2)+"99");// 2번째 인덱스 원소에 charlie99 넣음 System.out.println(Arrays.toString(strs));// [alpha88, beta, charlie]System.out.println(lst);// [alpha, beta, charlie99, ttt]** // Initialize a list using an array List<Integer> lstInt =Arrays.asList(22,44,11,33);System.out.println(lstInt);// [22, 44, 11, 33] }}