컬렉션 프레임워크
컬렉션 프레임워크
자바에서 데이터를 메모리에 저장하고 꺼내 쓰는 문제를 해결하는 표준 도구가 컬렉션 프레임워크(Collections Framework)예요. 이건 처음부터 끝까지 순서대로 읽어도 되고, 필요한 주제만 건너뛰어가며 봐도 좋아요. 프레임워크가 워낙 방대하고 강력하다 보니 튜토리얼도 꽤 많아요.
출처: dev.java
본문
컬렉션 프레임워크는 여러 튜토리얼로 구성된 시리즈예요. 컬렉션 프레임워크는 JDK에서 가장 널리 쓰이는 API인데, 목적에 따라 다음과 같은 주제들을 차례로 다뤄요.
- 컬렉션 프레임워크로 데이터 저장하기 — 왜 배열 대신 컬렉션을 고를까요?
Iterable부터List,NavigableSet까지 이어지는 컬렉션 계층 구조가 인터페이스들을 어떻게 확장하는지 이해해요. - 컬렉션에 요소 저장하기 —
Collection을 사용해 요소를 저장하고 꺼내는 방법. - 컬렉션의 요소 순회하기 — 컬렉션의 내용을 반복하는 방법.
- Collection을 List로 확장하기 —
List인터페이스 알아보기. - Collection을 Set, SortedSet, NavigableSet으로 확장하기 —
Set인터페이스 알아보기. - 컬렉션 팩토리 메서드로 데이터 생성·처리하기 — 변경 불가능한 컬렉션 만들기.
- 스택과 큐에 요소 저장하기 —
Queue계층 구조 길 찾기. - Map으로 키-값 쌍 저장하기 —
Map계층 구조 소개. - Map의 내용 관리하기 —
Map으로 키-값 쌍 다루기. - 람다 표현식으로 Map 값 처리하기 —
Map에 저장된 값 다루기. - SortedMap과 NavigableMap으로 키 정렬 유지하기 —
SortedMap으로 키-값 쌍 정렬하기. - 키에 변경 불가능한 타입 고르기 — 가변 키의 사용 피하기.
- 올바른 구현 고르기 —
ArrayList와LinkedList중 어느List구현을 골라야 할까요?
컬렉션 프레임워크는 메모리 안의 데이터를 저장·정리·접근하는 방법들을 모델링한 것인데, 이 개념들은 자바가 탄생하기 훨씬 전부터 발전해 온 개념들이에요. 기술적으로 보면 컬렉션 프레임워크는 서로 다른 방식으로 데이터를 저장하기 위한 여러 컨테이너를 모델링하는 인터페이스의 집합이고, 각 인터페이스마다 구현체를 최소 하나씩 제공해요.
프레임워크의 인터페이스는 크게 두 갈래로 나뉘어요. **컬렉션(Collection)**과 **맵(Map)**이에요.
- 컬렉션은 객체를 저장하고 순회하는 데 초점을 맞춰요. 이 범주의 뿌리 인터페이스가
Collection이에요. 실제로Collection은Iterable인터페이스를 확장하는데,Iterable은 컬렉션 프레임워크의 일부는 아니에요. - 큐와 스택은 사실 객체 컬렉션을 순회하는 용도가 핵심은 아니지만,
Collection계층에 추가된 뒤로는 그것도 가능하게 됐어요. - 마지막으로 알아야 할 계층이 하나 더 있는데, 바로
Iterator계층이에요. 이터레이터는 객체 컬렉션을 순회할 수 있는 객체로, 컬렉션 프레임워크의 일부예요.
정리하면 Collection과 Map 두 가지 주요 범주, Queue라는 하위 범주, 그리고 곁가지인 Iterator 범주가 있는 셈이에요. 각 주제의 세부 내용은 위 목록의 각 튜토리얼에서 하나씩 다루게 돼요.
더 알아보기 (Learn more)
컬렉션의 계층 구조, 각 인터페이스의 역할, 구현체 선택 기준 같은 내용은 각 하위 튜토리얼에서 더 깊게 다뤄져요. 튜토리얼을 순서대로 따라가면 배열보다 컬렉션을 써야 하는 이유부터 최적의 구현체를 고르는 방법까지 자연스럽게 이어져요.