Java - List, Set, Map 비교 및 구현체 분석

m0ng·2025년 6월 17일

1. 컬렉션 프레임워크 개요

Java의 컬렉션 프레임워크는 데이터를 효율적으로 저장, 검색, 수정하기 위한 구조들을 제공합니다. 주요 인터페이스로는 List, Set, Map이 있으며, 각각의 구현체들이 존재합니다.

2. List 인터페이스와 구현체

ArrayList

- 배열 기반의 List 구조
- 검색 속도 빠름 (O(1))
- 중간 삽입/삭제는 느림 (O(n))

LinkedList

- 이중 연결 리스트 기반
- 삽입/삭제가 빠름 (O(1))
- 검색 속도 느림 (O(n))
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
System.out.println(list.get(0));

Set 인터페이스와 구현체

HashSet

-순서를 보장하지 않음

-중복 허용하지 않음

-내부적으로 HashMap 사용

TreeSet

-자동 정렬됨 (이진 탐색 트리 기반)

-성능은 HashSet보다 느릴 수 있음

LinkedHashSet

  • 입력 순서 유지
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 중복 허용 안됨

Map 인터페이스와 구현체

HashMap

-키-값 쌍 저장

-순서 없음

-null 키 1개 허용, null 값 여러 개 가능

TreeMap

-키 기준 정렬 (이진 트리 기반)

LinkedHashMap

  • 삽입 순서 유지
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	키 정렬 필요	키 정렬 결과 필요할 때

0개의 댓글