Java 기초 정리 - 자료구조 (List)

Zyoon·2025년 4월 16일

Java 기초정리

목록 보기
18/24
post-thumbnail

💡List 개념 정리


List


📘 배열과 같이 객체를 일렬로 늘어놓은 구조


  1. ArrayList

    • 내부적으로 배열로 구현
    • 인덱스로 접근 → 조회 속도 빠름 (O(1)
    • 중간에 삽입/삭제 → 느림 (O(n))
    • 비동기 (스레드 안전 X)
    • 가장 많이 사용
    List<String> list = new ArrayList<>();
    list.add("A");
    list.add("B");
    

  1. LinkedList

    • 양방향 연결 리스트(Double Linked List)로 구현
    • 중간 삽입/삭제 빠름 (O(1))
    • 인덱스로 접근 → 느림 (O(n))
    • 비동기 (스레드 안전 X)
    List<String> list = new LinkedList<>();
    list.add("A");
    list.add("B");

  1. CopyOnWriteArrayList

    • 읽기 많은 멀티스레드 환경에서 적합
    • 변경할 때마다 복사본을 새로 생성
    • 읽기는 빠름, 쓰기는 느림
    • 동기화 지원 (스레드 안전)
    List<String> list = new CopyOnWriteArrayList<>();
    list.add("A");
    list.add("B");
  1. 정리

    List 종류정렬중복 허용특징
    ArrayListO (인덱스 순)O배열 기반, 조회 빠름, 삽입/삭제 느림
    LinkedListO (삽입 순)O연결 리스트 기반, 삽입/삭제 빠름, 조회 느림
    CopyOnWriteArrayListO (인덱스 순)O읽기 많은 멀티스레드 환경에 적합, 쓰기 시 복사

  1. 기본 메서드 및 코드 예시

    List<String> list = new ArrayList<>();
    
    // 추가
    list.add("Apple");
    list.add("Banana");
    
    // 삽입 (n번 인덱스에 삽입)
    list.add(1, "Cherry");
    
    // 삭제
    list.remove("Banana");
    list.remove(0);
    
    // 조회
    System.out.println(list.get(0));  // Cherry
    System.out.println(list.contains("Apple"));  // false
    
    // 수정
    list.set(0, "Orange");
    
    // 크기
    System.out.println(list.size());  // 1
    
    // 비어있는지 확인
    System.out.println(list.isEmpty());  // false
    
    // 정렬
    list.add("Banana");
    list.add("Apple");
    list.sort(Comparator.naturalOrder()); //오름차순 [Apple, Banana, Orange]
    list.sort(Comparator.reverseOrder()); //내림차순 [Orange, Banana, Apple]
    
profile
기어 올라가는 개발

0개의 댓글