JAVA (17) - 컬렉션 프레임워크

NoETA·2026년 8월 9일

JAVA

목록 보기
17/27
post-thumbnail

1. 개요

자바의 컬렉션 프레임워크(Collection Framework)는 다수의 데이터를 효율적으로 저장, 관리, 조작할 수 있도록 표준화된 데이터 구조와 알고리즘을 제공하는 클래스와 인터페이스의 집합이다. 배열(Array)이 고정된 크기만을 지원하는 한계를 극복하기 위해 가변 크기의 데이터 구조를 제공하며, 표준화된 인터페이스를 통해 일관된 방식으로 데이터를 다룰 수 있게 해준다.

2. 컬렉션 프레임워크의 핵심 인터페이스 구조

자바 컬렉션 프레임워크는 크게 Collection 인터페이스와 Map 인터페이스 두 개의 주요 줄기로 나뉜다.

                  Iterable
                     │
                 Collection
      ┌──────────────┼──────────────┐
     List           Set           Queue
      │              │              │
 ArrayList      HashSet        LinkedList
LinkedList      TreeSet         ArrayDeque
 Vector

(※ Map 인터페이스는 구조상의 이유로 Collection을 상속받지 않고 독립적으로 존재한다.)

3. List 인터페이스

순서가 있는 데이터의 집합이며, 데이터의 중복을 허용한다.

  • ArrayList: 내부적으로 가변 배열을 사용하여 데이터를 관리한다. 인덱스(Index)를 통한 데이터 조회(get) 속도가 빠르다(O(1)O(1)). 반면, 중간에 데이터를 삽입하거나 삭제할 때는 요소들의 이동이 필요하여 성능이 저하된다.
  • LinkedList: 양방향 연결 리스트 구조로 구현되어 있다. 요소의 삽입과 삭제가 빈번하게 발생하는 상황에서 뛰어난 성능을 보인다. 인덱스 조회의 경우 처음부터 순회해야 하므로 O(N)O(N)의 시간 복잡도를 갖는다.

4. Set 인터페이스

순서를 유지하지 않는 데이터의 집합이며, 중복을 허용하지 않는다.

  • HashSet: 해시 테이블(Hash Table) 기반으로 구현되어 데이터를 저장하고 검색한다. 요소의 추가, 삭제, 검색 속도가 매우 빠르다(O(1)O(1)). 중복 여부를 판단할 때 저장되는 객체의 hashCode()equals() 메서드를 활용한다.
  • TreeSet: 이진 탐색 트리(Red-Black Tree) 구조를 기반으로 구성된다. 데이터가 자동으로 오름차순 또는 지정한 정렬 기준에 따라 정렬되어 저장된다. 검색 및 정렬 연산에 O(logN)O(\log N)의 시간이 소요된다.

5. Map 인터페이스

키(Key)와 값(Value)의 쌍으로 데이터를 관리한다. 키는 중복될 수 없으나, 값은 중복을 허용한다.

  • HashMap: 키와 값을 해시 테이블 구조로 저장한다. 키의 중복을 허용하지 않으며, 순서를 보장하지 않는다. 가장 흔하게 사용되는 Map 구현체다.
  • TreeMap: 키를 기준으로 자동 정렬되는 Map 구조다. 정렬된 상태로 키-값 쌍을 조회하거나 범위 검색이 필요할 때 유용하다.
  • ConcurrentHashMap: 다중 스레드(Multi-thread) 환경에서 스레드 안정성(Thread-safety)을 제공하면서도, 기존의 Hashtable 대비 높은 성능을 발휘하도록 분할 Lock 메커니즘을 사용한다.

6. Stack과 Queue, Deque

  • Stack: LIFO(Last In First Out, 후입선출) 구조를 갖는 자료구조다. 현재는 Stack 클래스 대신 Deque 인터페이스를 사용하는 것이 권장된다.
  • Queue: FIFO(First In First Out, 선입선출) 구조를 갖는다. 주로 LinkedListArrayDeque로 구현하여 사용한다.
  • Deque (Double Ended Queue): 양쪽 끝에서 요소의 삽입과 삭제가 모두 가능한 구조다. Stack과 Queue의 기능을 모두 수행할 수 있다.

7. 정리

자바 컬렉션 프레임워크는 상황에 맞는 최적의 데이터 구조를 선택할 수 있게 해준다. 순서가 중요하고 중복 조회가 빈번하다면 List(ArrayList), 중복을 제거해야 한다면 Set(HashSet), 키-값 형태의 매핑 데이터라면 Map(HashMap)을 선택하는 것이 기본 규칙이다.

profile
https://xoruddl.github.io/ 로 이사

0개의 댓글