[자료구조] List Map Set의 차이와 활용(Java)
2025. 1. 3. 14:59ㆍCS
1. List Map Set이란?
Java 컬렉션 프레임워크에서 제공하는 List, Map, Set은 데이터를 저장, 관리, 처리하기 위한 기본 인터페이스이다.
각 인터페이스는 서로 다른 특징과 용도로 설계되어 있으며, 상황에 따라 적합한 것을 선택해 사용할 수 있다.
2. List Map Set의 차이
구분 | List | Set | Map |
정의 | 순서가 있는 데이터의 집합 | 중복을 허용하지 않는 데이터의 집합 | 키-값(Key-Value) 쌍으로 데이터를 저장 |
중복 허용 | O | X | 키는 중복 X, 값은 중복 O |
순서 유지 | O (인덱스로 접근 가능) | X (일부 구현체는 유지) | X (키를 기준으로 접근 가능) |
대표 구현체 | ArrayList, LinkedList | HashSet, TreeSet | HashMap, TreeMap |
3. List Map Set의 주요 구현제
3-1. List
- 정의: 순서가 중요한 데이터의 집합으로, 중복된 데이터를 저장할 수 있다.
- 주요 구현체:
- ArrayList: 배열 기반, 데이터 접근 속도가 빠르며 데이터 삽입/삭제가 느림
- LinkedList: 연결 리스트 기반, 삽입/삭제가 빠르며 데이터 접근 속도가 느림 - 활용 예시:
- 순차적인 데이터 처리
- 대기열 관리
- 인덱스를 통한 빠른 접근이 필요한 경우 - 코드 예제:
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("Apple"); // 중복 허용
System.out.println(list); // 출력: [Apple, Banana, Apple]
}
}
3-2. Set
- 정의: 중복을 허용하지 않는 데이터의 집합으로, 순서는 보장되지 않는다.
- 주요 구현체:
- HashSet: 빠른 삽입/삭제/검색을 지원하며, 순서를 보장하지 않음
- TreeSet: 데이터가 자동으로 정렬되며, 삽입/삭제/검색이 느림 - 활용 예시:
- 중복 데이터를 제거
- 데이터의 유일성이 중요한 경우 - 코드 예제:
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("Apple"); // 중복 삽입
System.out.println(set); // 출력: [Apple, Banana]
}
}
3-3. Map
- 정의: 키-값(Key-Value) 쌍으로 데이터를 저장하며, 키를 기준으로 데이터를 검색하거나 수정할 수 있다.
- 주요 구현체:
- HashMap: 빠른 검색/삽입/삭제를 지원하며, 순서를 보장하지 않음
- TreeMap: 키를 기준으로 데이터를 정렬하며, 성능은 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(1, "Grape"); // 키 중복 시 값 대체
System.out.println(map); // 출력: {1=Grape, 2=Banana}
}
}
4. List Map Set의 활용 시 선택 기준
- List:
- 데이터의 순서가 중요하거나 중복 허용이 필요한 경우
- 예) 대기열, 순차 데이터 - Set
- 중복을 제거하거나 유일한 데이터 관리가 필요한 경우
- 예) 유저 ID, 태그 관리 - Map
- 키를 통해 데이터를 빠르게 검색하거나 키-값 관계를 관리할 때
- 예) 사전, 데이터베이스 키-값 저장소
5. 시간 복잡도 비교
연산 | ArrayList | LinkedList | HashSet | TreeSet | HashMap | TreeMap |
삽입 | O(1) | O(1) | O(1) | O(log n) | O(1) | O(log n) |
삭제 | O(n) | O(1) | O(1) | O(log n) | O(1) | O(log n) |
검색 | O(1) | O(n) | O(1) | O(log n) | O(1) | O(log n) |
'CS' 카테고리의 다른 글
웹 인증의 이해: 쿠키, 세션, 토큰 그리고 JWT (0) | 2025.01.21 |
---|---|
[알고리즘] 백트래킹(Backtracking) (0) | 2025.01.04 |
[알고리즘] 백트래킹(Backtracking) (1) | 2024.12.28 |
[알고리즘] 동적 계획법(Dynamic Programming, DP) (0) | 2024.12.28 |
[알고리즘] BFS(너비 우선 탐색)와 DFS(깊이 우선 탐색) (0) | 2024.12.21 |