728x90
반응형
Java Collection Framework는 데이터를 효율적으로 저장하고 조작할 수 있는 자료구조 및 알고리즘의 집합입니다. 컬렉션 프레임워크는 List, Set, Map을 포함한 여러 인터페이스와 클래스를 제공하며, 이를 활용하면 다양한 데이터 구조를 쉽게 구현할 수 있습니다.
1. Java Collection Framework란?
Java Collection Framework(JCF)는 데이터를 저장하고 관리하기 위한 인터페이스 및 클래스의 모음입니다.
- java.util 패키지에 포함되어 있습니다.
- 동적 크기 조절, 정렬, 검색 등의 기능을 제공합니다.
- 기본적으로 List, Set, Map의 세 가지 주요 인터페이스로 분류됩니다.
2. List 인터페이스 (순서가 있는 데이터 저장)
✅ List의 개념
- 순서가 있는 데이터 저장 (인덱스를 기반으로 데이터 관리)
- 중복 허용
- 대표적인 구현 클래스: ArrayList, LinkedList, Vector
✅ List 사용 예제 (ArrayList)
import java.util.ArrayList;
public class ListExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
list.add("Apple"); // 중복 허용
System.out.println("List 요소: " + list);
}
}
출력 결과:
List 요소: [Apple, Banana, Cherry, Apple]
🔹 List는 순서를 유지하며, 중복 데이터를 허용합니다.
✅ List 주요 구현 클래스 비교
클래스특징
| ArrayList | 배열 기반 리스트, 빠른 조회 성능 (O(1)) |
| LinkedList | 연결 리스트 기반, 삽입/삭제 성능 우수 (O(1)) |
| Vector | ArrayList와 유사하나 동기화 지원 |
3. Set 인터페이스 (중복 없는 데이터 저장)
✅ Set의 개념
- 중복을 허용하지 않는 자료구조
- 순서 보장 X (데이터가 삽입된 순서와 다를 수 있음)
- 대표적인 구현 클래스: HashSet, LinkedHashSet, TreeSet
✅ Set 사용 예제 (HashSet)
import java.util.HashSet;
public class SetExample {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Cherry");
set.add("Apple"); // 중복된 요소 추가
System.out.println("Set 요소: " + set);
}
}
출력 결과:
Set 요소: [Banana, Cherry, Apple]
🔹 중복된 요소 "Apple"이 자동으로 제거됨 🔹 데이터의 저장 순서가 보장되지 않을 수 있음
✅ Set 주요 구현 클래스 비교
| 클래스 | 특징 |
| HashSet | 순서 보장 X, 빠른 검색 (O(1)) |
| LinkedHashSet | 입력 순서 유지 |
| TreeSet | 정렬된 상태 유지 |
4. Map 인터페이스 (키-값 쌍 저장)
✅ Map의 개념
- 키(Key)와 값(Value)의 쌍으로 데이터 저장
- 키는 중복 불가능, 값은 중복 가능
- 대표적인 구현 클래스: HashMap, LinkedHashMap, TreeMap
✅ Map 사용 예제 (HashMap)
import java.util.HashMap;
public class MapExample {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "Apple");
map.put(2, "Banana");
map.put(3, "Cherry");
map.put(1, "Grapes"); // 키 중복 (기존 값 덮어쓰기)
System.out.println("Map 요소: " + map);
}
}
출력 결과:
Map 요소: {1=Grapes, 2=Banana, 3=Cherry}
🔹 키 중복이 허용되지 않으며, 같은 키를 사용하면 기존 값이 덮어쓰기됨 🔹 값은 중복 가능
✅ Map 주요 구현 클래스 비교
| 클래스 | 특징 |
| HashMap | 키 순서 보장 X, 빠른 검색 (O(1)) |
| LinkedHashMap | 입력 순서 유지 |
| TreeMap | 키 기준 정렬 유지 |
5. List, Set, Map 비교
| 비교 항목 | List | Set | Map |
| 중복 허용 | O | X | 키: X, 값: O |
| 순서 유지 | O | LinkedHashSet만 O | LinkedHashMap만 O |
| 데이터 구조 | 인덱스 기반 저장 | 중복 없는 집합 | 키-값 쌍 저장 |
| 대표 클래스 | ArrayList, LinkedList | HashSet, TreeSet | HashMap, TreeMap |
✅ List 사용 추천 경우
- 순서가 중요하고, 중복 데이터를 허용해야 할 때
- 배열과 유사한 동작이 필요할 때
✅ Set 사용 추천 경우
- 중복을 방지해야 할 때
- 특정 값이 존재하는지 빠르게 확인해야 할 때
✅ Map 사용 추천 경우
- 데이터를 키-값 쌍으로 저장해야 할 때
- 빠르게 특정 키를 기반으로 값을 찾을 때
결론
- List: 순서가 있는 데이터 저장 (중복 허용) → ArrayList, LinkedList
- Set: 중복 없는 데이터 저장 (순서 X) → HashSet, TreeSet
- Map: 키-값(Key-Value) 형태의 데이터 저장 → HashMap, TreeMap
적절한 컬렉션을 선택하여 효율적인 Java 프로그램을 개발해 보세요! 🚀
728x90
반응형
'IT > JAVA' 카테고리의 다른 글
| Java 스트림(Stream) API와 람다 표현식 (2) | 2025.03.02 |
|---|---|
| HashMap vs HashSet 차이점 (1) | 2025.03.01 |
| Java의 배열(Array)과 리스트(List) 차이점 (0) | 2025.02.27 |
| Java에서 예외 처리하는 방법 (try-catch, throw, finally) (0) | 2025.02.26 |
| Java의 static과 final 키워드 활용법 (1) | 2025.02.25 |