Java의 컬렉션 프레임워크는 데이터를 효율적으로 저장, 검색, 수정하기 위한 구조들을 제공합니다. 주요 인터페이스로는 List, Set, Map이 있으며, 각각의 구현체들이 존재합니다.
- 배열 기반의 List 구조
- 검색 속도 빠름 (O(1))
- 중간 삽입/삭제는 느림 (O(n))
- 이중 연결 리스트 기반
- 삽입/삭제가 빠름 (O(1))
- 검색 속도 느림 (O(n))
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
System.out.println(list.get(0));
-순서를 보장하지 않음
-중복 허용하지 않음
-내부적으로 HashMap 사용
-자동 정렬됨 (이진 탐색 트리 기반)
-성능은 HashSet보다 느릴 수 있음
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 중복 허용 안됨
-키-값 쌍 저장
-순서 없음
-null 키 1개 허용, null 값 여러 개 가능
-키 기준 정렬 (이진 트리 기반)
Map<String, Integer> map = new HashMap<>();
map.put("Math", 90);
map.put("English", 85);
System.out.println(map.get("Math"));
ArrayList 빠른 인덱스 접근 검색 빈도 높을 때
LinkedList 빠른 삽입/삭제 삽입/삭제가 잦을 때
HashSet 중복 제거 유일한 값 저장할 때
TreeSet 정렬 필요 오름차순/내림차순 필요할 때
HashMap 빠른 검색 일반적인 키-값 저장
TreeMap 키 정렬 필요 키 정렬 결과 필요할 때