Java 컬렉션 프레임워크 기초

자바 컬렉션 프레임워크(Java Collection Framework)는 다수의 데이터를 효율적으로 관리하기 위한 표준화된 클래스 집합이다.

인터페이스를 통해 데이터 관리 방식을 추상화하여 코드의 재사용성과 유지보수성을 높인다.

List 인터페이스 (순서 유지, 중복 허용)

  • ArrayList: 내부적으로 배열을 사용하여 인덱스 조회가 매우 빠르다.
    (O(1))
  • LinkedList: 노드 간 연결 구조로 데이터 삽입 및 삭제가 빈번한 경우 유리하다.
    (O(1))
List<String> arrayList = new ArrayList<>();
List<String> linkedList = new LinkedList<>();

// 데이터 추가
arrayList.add("Java");
arrayList.add("Python");

// 특정 위치 삽입 (LinkedList가 더 효율적)
linkedList.add(0, "First");

Set 인터페이스 (순서 미보장, 중복 불허)

  • HashSet: 해시 테이블을 사용하여 중복을 빠르게 제거한다.
  • TreeSet: 이진 탐색 트리 구조로 데이터를 자동 정렬한다.
Set<Integer> set = new HashSet<>();
set.add(10);
set.add(20);
set.add(10); // 중복 데이터는 무시됨

System.out.println("Size: " + set.size()); // 출력: 2

Map 인터페이스 (Key-Value 쌍)

  • HashMap: 키를 기반으로 값을 빠르게 검색한다.
    (O(1))
  • TreeMap: 키를 기준으로 데이터를 정렬하여 저장한다.
    (O(log N))
Map<String, Integer> scores = new HashMap<>();
scores.put("Kim", 90);
scores.put("Lee", 85);

// 키 존재 여부 확인 후 값 획득
if (scores.containsKey("Kim")) {
    int score = scores.get("Kim");
}

컬렉션 선택 가이드

| 상황 | 추천 컬렉션 |

| :— | :— |

| 빠른 인덱스 조회 필요 | ArrayList |

| 빈번한 데이터 삽입/삭제 | LinkedList |

| 중복 제거 필요 | HashSet |

| 정렬된 상태 유지 | TreeSet, TreeMap |

| 키-값 쌍 관리 | HashMap |

P.S

컬렉션 프레임워크는 데이터의 특성에 맞는 최적의 자료구조를 제공한다.

각 클래스의 내부 동작 방식과 시간 복잡도를 이해하고 적절한 컬렉션을 선택하는 것이 성능 최적화의 핵심인 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts