ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ArrayList
    교육 2020. 10. 5. 15:53

    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

    댓글

Designed by Tistory.