728x90
자바 컬렉션 프레임워크: List, Set, Map 심층 분석
컬렉션 프레임워크란 무엇인가?
자바 컬렉션 프레임워크는 다수의 데이터를 효율적으로 관리하기 위해 제공되는 클래스들의 집합입니다. 배열과 달리 크기가 동적으로 변하고, 다양한 자료구조를 제공하여 개발자가 원하는 형태로 데이터를 저장하고 처리할 수 있도록 돕습니다. 컬렉션 프레임워크는 제네릭을 통해 타입 안전성을 보장하고, 다양한 유틸리티 메소드를 제공하여 개발 생산성을 향상시킵니다.
컬렉션 프레임워크의 주요 인터페이스
컬렉션 프레임워크의 핵심 인터페이스는 List, Set, Map입니다.
1. List 인터페이스
- 정렬된 순서를 보장하는 컬렉션
- 중복된 요소를 허용
- 인덱스를 통해 요소에 접근
주요 구현 클래스:
- ArrayList: 배열 기반으로 구현되어 빠른 임의 접근을 제공하지만, 중간에 요소를 삽입/삭제할 때 성능이 저하될 수 있습니다.
- LinkedList: 양방향 연결 리스트 기반으로 구현되어 중간에 요소를 삽입/삭제하는 작업에 효율적입니다.
주요 메소드:
- add(E e): 요소 추가
- get(int index): 인덱스를 이용한 요소 조회
- remove(int index): 인덱스를 이용한 요소 삭제
2. Set 인터페이스
- 중복된 요소를 허용하지 않는 컬렉션
- 순서가 보장되지 않음 (HashSet의 경우)
- 요소의 유일성을 보장
주요 구현 클래스:
- HashSet: 해시 테이블을 이용하여 빠른 검색을 제공합니다.
- TreeSet: 트리 구조를 이용하여 요소를 정렬된 순서로 유지합니다.
주요 메소드:
- add(E e): 요소 추가
- contains(Object o): 요소 포함 여부 확인
- remove(Object o): 요소 삭제
3. Map 인터페이스
- 키(key)와 값(value) 쌍으로 데이터를 저장
- 키는 중복될 수 없지만, 값은 중복될 수 있음
주요 구현 클래스:
- HashMap: 해시 테이블을 이용하여 빠른 검색을 제공합니다.
- TreeMap: 트리 구조를 이용하여 키를 정렬된 순서로 유지합니다.
주요 메소드:
- put(K key, V value): 키-값 쌍 추가
- get(Object key): 키를 이용한 값 조회
- remove(Object key): 키를 이용한 값 삭제
컬렉션 프레임워크 선택 가이드
- 데이터의 중복 허용 여부: 중복을 허용해야 한다면 List, 중복을 허용하지 않아야 한다면 Set을 선택합니다.
- 데이터의 순서 중요성: 순서가 중요하다면 List 또는 TreeSet을, 순서가 중요하지 않다면 HashSet을 선택합니다.
- 데이터 접근 방식: 임의 접근이 필요하다면 ArrayList, 중간 삽입/삭제가 빈번하다면 LinkedList를 선택합니다.
- 키-값 쌍 저장: 키-값 쌍으로 데이터를 저장해야 한다면 Map을 선택합니다.
컬렉션 프레임워크 활용 예시
import java.util.*;
public class CollectionExample {
public static void main(String[] args) {
// List 예시
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
// Set 예시
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(2); // 중복된 값은 저장되지 않음
// Map 예시
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
}
}
결론
자바 컬렉션 프레임워크는 다양한 자료구조와 유틸리티 메소드를 제공하여 개발자가 데이터를 효율적으로 관리할 수 있도록 돕습니다. 개발 시 요구사항에 맞는 적절한 컬렉션 클래스를 선택하여 사용하는 것이 중요합니다.
728x90
'Java를 배워보자 > 4. 자바 API' 카테고리의 다른 글
자바 예외 처리 (try-catch) (0) | 2024.09.27 |
---|---|
자바 Date 클래스 (0) | 2024.09.27 |
자바 Math 클래스 (0) | 2024.09.26 |
자바 Wrapper 클래스 (0) | 2024.09.26 |
자바 String 클래스 (0) | 2024.09.26 |