-
ArrayList 클래스는 크기가 고정되어 있는 배열(Array)을 개선한 resizable Array이다.
배열의 랜덤 엑세스를 통해 데이터를 가져오는 속도가 빠르다. 또한 비동기식(non-synchronized)이므로 여러 개의 스레드가
동시에 ArrayList로 동작할 수 있다. ArrayList 클래스는 내부적으로 배열을 이용하여 요소를 저장한다.
리스트 초기화(initialize)
ArrayList<String> list = new ArrayList<>(); // -- 방법 1. 가장 일반적인 초기화 list.add("A"); list.add("B"); list.add("C"); ArrayList<String> list = new ArrayList<>(Arrays.asList("A", "B", "C")); // -- 방법 2. Arrays.asList를 이용한 초기화 ArrayList<String> list = new ArrayList<String>() {{ // -- 방법 3. 익명의 inner class로 초기화 add("A"); add("B"); add("C"); }}; ArrayList<String> list = new ArrayList<>(Collections.nCopies(3, "A")); // -- 방법 4. Collections.nCopies를 이용한 초기화
리스트 반복(iterator)
for (int i = 0; i < list.size(); i++) { // -- 방법 1. for문 System.out.println(list.get(i)); } for (Integer i : list) { // -- 방법 2. 향상된 for문 System.out.println(i); } Iterator<Integer> it = list.iterator(); // -- 방법 3. Iterator 인터페이스 while (it.hasNext()) { System.out.println(it.next()); }
리스트 추가/삭제(add/remove)
ArrayList<Integer> list = new ArrayList<>(); list.add(10); list.add(20); list.add(30); list.add(1, 40); list.remove(2); System.out.println(list); // 출력 결과 : [10, 40, 30] ArrayList<Integer> tempList = new ArrayList<>(); tempList.add(100); tempList.add(200); list.addAll(tempList); list.addAll(1, tempList); System.out.println(list); // 출력 결과 : [10, 100, 200, 40, 30, 100, 200] list.clear(); list.removeAll(list); System.out.println(list); // 출력 결과 : []
리스트 가져오기/검색(get)
ArrayList<Integer> list = new ArrayList<>(); list.add(10); list.add(20); list.set(0, 30); list.add(40); list.add(20); System.out.println(list.get(0)); // 출력 결과 : 30 System.out.println(list.indexOf(9)); // 출력 결과 : -1 System.out.println(list.lastIndexOf(20)); // 출력 결과 : 3 System.out.println(list.contains(1)); // 출력 결과 : false System.out.println(list.isEmpty()); // 출력 결과 : false System.out.println(list); // 출력 결과 : [30, 20, 40, 20] ArrayList<Integer> list2 = new ArrayList<>(list.subList(1, 3)); System.out.println(list2); // 출력 결과 : [20, 40]
리스트 기타
ArrayList<Integer> list = new ArrayList<>(); list.add(10); list.add(20); list.add(30); ArrayList<Integer> list2 = (ArrayList<Integer>) list.clone(); list.add(40); System.out.println(list); // 출력 결과 : [10, 20, 30, 40] System.out.println(list2); // 출력 결과 : [10, 20, 30] Collections.swap(list, 0, 3); System.out.println(list); // 출력 결과 : [40, 20, 30, 10]
리스트 정렬
Collections.sort(list); // -- 오름차순 정렬 : Collections.sort Collections.sort(list, Collections.reverseOrder()); // -- 내림차순 정렬 : Collections.sort, reverseOrder Collections.sort(list); // -- 내림차순 정렬 : Collections.sort, reverse Collections.reverse(list);
리스트 동기화
List<String> list = Collections.synchronizedList(new ArrayList<>()); // -- 방법 1 list.add("A"); list.add("B"); list.add("C"); synchronized (list) { Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) System.out.println(iterator.next()); } CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>(); // -- 방법 2 list.add("A"); list.add("B"); list.add("C"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) System.out.println(iterator.next());
'교육' 카테고리의 다른 글
이미지 reszie하기 (0) 2020.11.14 HTTP Header 구조 (0) 2020.10.27 java.io.File 클래스 / 주요 메서드 (0) 2020.10.27 HashMap 메소드 (0) 2020.10.05