List<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.remove(2);
list.contains(2);
list.size();
list.isEmpty();
List<MyData> list = new LinkedList<>();
list.add(new MyData());
List<Integer> list = new LinkedList<>(Arrays.asList(1, 2, 3, 4, 5));
updateList(Collections.unmodifiableList(list));
void updateList(final List<Integer> list) {
for (int i = 0; i < list.size(); i++) {
list.set(i, list.get(i) * 2); // ERROR!!
}
}
List<E> list = new Vector<>();
List<E> list = new ArrayList<>();
List<E> list = new ArrayList<>(10);
List에 입력될 값들을 사용해서 리스트를 만들기
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
배열을 List로 변환
배열처럼 고정된 크기
-> 값을 변경할 수는 있지만 크기에 영향을 주는 add/remove 작업은 불가
Integer[] arr = new Integer[]{1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr);
기존의 List로 새 List 만들기
List<Integer> list1 = Arrays.asList(1,2,3,4,5);
List<Integer> list2 = new LinkedList<>(list1);
코딩테스트 문제에서 반환값이 array인 경우
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int[] arr = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
arr[i] = list.get(i);
}
만들고자 하는 배열타입의 생성방법을 지정해야 함
최종 배열 타입이 다를 경우 사용 불가 (자동 형변환-auto unboxing이 적용되지 않음)
(정상)
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Integer[] arr = list.toArray(Integer[]::new);
(에러)
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int[] arr = list.toArray(int[]::new);
// error: no suitable method found for toArray(int[]::new)
primitive로 unboxing이 필요한 경우 편리
List<String> list = Arrays.asList("A", "B", "C", "D", "E");
String[] arr = list.stream().toArray(String[]::new);
(primitive unboxing)
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
loop를 돌면서 List 요소 삭제 시 삭제할 때마다 size가 줄어들어 index가 고정되지 않기 때문에 예상대로 동작하지 않음.
항상 0번째의 값을 삭제하게 해도 마찬가지. size가 계속 감소하기 때문에 for문에서 i의 값이 size이상이 되는 경우 loop가 멈추게 됨.
--> 초기의 size값을 캡쳐하여 loop의 반복횟수를 고정
(오류)
List<Integer> list = new LinkedList<>(Arrays.asList(1, 2, 3, 4, 5));
for (int i = 0; i < list.size(); i++) {
list.remove(i);
}
(정상)
List<Integer> list = new LinkedList<>(Arrays.asList(1, 2, 3, 4, 5));
int size = list.size();
for (int i = 0; i < size; i++) {
list.remove(0);
}