Java 컬렉션 프레임워크는 자바 프로그래밍의 핵심 부분으로, 데이터 구조와 알고리즘을 표준화된 방식으로 제공합니다.
이 프레임워크는 개발자가 데이터를 효율적으로 저장, 검색, 조작할 수 있도록 다양한 인터페이스와 클래스를 제공합니다.
컬렉션 프레임워크의 개요
구성 요소 | 설명 |
---|---|
인터페이스 | 컬렉션을 표현하는 추상 데이터 타입으로, 구현 세부사항과 독립적으로 컬렉션을 조작할 수 있게 함 |
구현 클래스 | 컬렉션 인터페이스의 구체적인 구현체로, 재사용 가능한 데이터 구조 |
알고리즘 | 검색, 정렬 등 컬렉션 객체에 대한 유용한 연산을 수행하는 메서드 |
컬렉션 프레임워크의 계층 구조
인터페이스 | 설명 | 주요 특징 |
---|---|---|
Collection | 모든 컬렉션의 루트 인터페이스 | 객체 그룹을 다루는 기본 메서드 제공 |
List | Collection을 확장하여 순서가 있는 컬렉션 구현 | 인덱스 기반 접근, 중복 요소 허용 |
Set | Collection을 확장하여 중복을 허용하지 않는 컬렉션 구현 | 고유 요소만 저장, 위치 개념 없음 |
Queue | Collection을 확장하여 요소 처리 전 보관하는 컬렉션 구현 | FIFO(First-In-First-Out) 방식 |
Map | 키-값 쌍을 매핑하는 객체 | Collection 상속 안함, 키는 중복 불가 |
주요 컬렉션 구현 클래스
인터페이스 | 구현 클래스 | 특징 |
---|---|---|
List | ArrayList | 동적 배열 기반, 빠른 임의 접근 |
List | LinkedList | 이중 연결 리스트, 빠른 삽입/삭제 |
Set | HashSet | 해시 테이블 기반, 빠른 검색 |
Set | LinkedHashSet | 삽입 순서 유지, HashSet 확장 |
Set | TreeSet | 정렬된 트리 기반, 자연 순서 유지 |
Map | HashMap | 해시 테이블 기반, 빠른 검색 |
Map | TreeMap | 정렬된 키-값 맵, 키 기준 정렬 |
Map | LinkedHashMap | 삽입 순서 유지, HashMap 확장 |
컬렉션 프레임워크 사용 모범 사례
모범 사례 | 설명 |
---|---|
제네릭 사용 | 타입 안전성 보장, 컴파일 시점 타입 오류 감지 |
적절한 인터페이스 사용 | 유연성을 위해 구체적인 구현보다 인터페이스 타입으로 선언 |
향상된 for문 활용 | 컬렉션 순회 시 가독성과 안전성 향상 |
불변 컬렉션 고려 | 스레드 안전성이 필요한 경우 Collections 유틸리티 클래스 활용 |
적절한 초기 용량 설정 | 성능 최적화를 위해 예상 크기에 맞는 초기 용량 지정 |
주요 컬렉션 메서드
메서드 | 반환 타입 | 설명 |
---|---|---|
add(E e) | boolean | 컬렉션에 요소 추가 |
remove(Object o) | boolean | 컬렉션에서 요소 제거 |
contains(Object o) | boolean | 컬렉션에 요소 포함 여부 확인 |
size() | int | 컬렉션의 요소 개수 반환 |
isEmpty() | boolean | 컬렉션이 비어있는지 확인 |
clear() | void | 컬렉션의 모든 요소 제거 |
iterator() | Iterator<E> | 컬렉션 요소를 순회하는 반복자 반환 |
Collections 유틸리티 클래스
메서드 | 설명 |
---|---|
sort(List<T>) | 리스트 요소를 자연 순서로 정렬 |
binarySearch(List<T>, T) | 정렬된 리스트에서 이진 검색 수행 |
reverse(List<T>) | 리스트 요소 순서 반전 |
shuffle(List<T>) | 리스트 요소 무작위 섞기 |
min(Collection<T>) | 컬렉션의 최소 요소 반환 |
max(Collection<T>) | 컬렉션의 최대 요소 반환 |
synchronizedList(List<T>) | 스레드 안전한 리스트 반환 |
unmodifiableList(List<T>) | 수정 불가능한 리스트 반환 |
Java 컬렉션 프레임워크를 효과적으로 활용하면 코드의 재사용성, 가독성, 유지보수성을 크게 향상시킬 수 있습니다.
각 컬렉션 유형의 특성을 이해하고 적절한 상황에 맞게 선택하는 것이 중요합니다.