11.1 컬렉션 프레임웍 소개 (Collections Framework Overview)
안내: 이 문서는 Java 21 버전을 기준으로 작성되었습니다.
배열(Array)은 여러 개의 데이터를 한 곳에 모아 관리하는 가장 기본적인 도구입니다. 하지만 배열에는 치명적인 단점이 있습니다. 크기를 처음에 반드시 고정해야 한다 는 점입니다. 만약 10명의 학생 이름을 저장하려고 배열을 만들었는데, 나중에 11번째 학생이 들어온다면? 배열을 통째로 새로 만들어야 하는 불편함이 생깁니다.
자바는 이런 불편함을 해결하기 위해 크기가 자유롭게 늘어나고 줄어드는 동적(Dynamic) 데이터 구조들 을 표준 라이브러리로 제공합니다. 이것을 컬렉션 프레임웍(Collections Framework) 이라고 부릅니다.
1. 컬렉션 프레임웍이란?
컬렉션 프레임웍은 데이터를 저장, 조회, 수정, 삭제하는 공통 기능을 인터페이스와 클래스들로 표준화해둔 거대한 라이브러리 체계입니다.
java.util 패키지 안에 있으며, 실제로 자바 개발에서 가장 많이 사용하는 도구들 중 하나입니다.
2. 핵심 인터페이스 3종류
컬렉션 프레임웍의 최상위에는 3가지 핵심 인터페이스가 있습니다.
| 인터페이스 | 특징 | 대표 구현 클래스 |
|---|---|---|
List | 순서가 있고, ** 중복 허용** | ArrayList, LinkedList |
Set | 순서 없음, ** 중복 불허**(자동 제거) | HashSet, TreeSet |
Map | ** 키(Key)-값(Value)**쌍으로 저장, 키는 중복 불허 | HashMap, TreeMap |
3. 언제 무엇을 쓸까요?
- 목록처럼 순서를 지켜 데이터를 쭉 저장하고 싶다→
List(ArrayList) - 중복 없이 유일한 값들만 모은 집합이 필요하다→
Set(HashSet) - 딕셔너리처럼 이름(Key)으로 값(Value)을 바로 찾고 싶다→
Map(HashMap)
import java.util.ArrayList;
import java.util.HashSet;
import java.util.HashMap;
// List: 중복 허용, 순서 있음
ArrayList<String> list = new ArrayList<>();
list.add("사과");
list.add("바나나");
list.add("사과"); // 중복 그대로 저장됨
System.out.println(list); // [사과, 바나나, 사과]
// Set: 중복 자동 제거, 순서 없음
HashSet<String> set = new HashSet<>();
set.add("사과");
set.add("바나나");
set.add("사과"); // 중복은 무시됨
System.out.println(set); // [바나나, 사과] (순서 보장 안됨)
// Map: 키-값 쌍으로 저장
HashMap<String, Integer> map = new HashMap<>();
map.put("국어", 95);
map.put("수학", 88);
map.put("영어", 92);
System.out.println(map.get("수학")); // 88
앞으로의 챕터에서 각 인터페이스의 대표 구현 클래스(ArrayList, HashSet, HashMap)를 하나씩 자세히 배워보겠습니다.