-
집합(Set): 중복 없는 데이터를 관리하는 자료구조자료구조 2025. 7. 12. 16:00
1. 집합(Set)이란?
집합(Set)은 중복되지 않는 데이터의 모음을 저장하고 관리하는 자료구조다. 수학의 집합 개념과 유사하게, 동일한 값이 두 번 이상 저장되지 않는 것이 특징이다. 일반적으로 검색, 삽입, 삭제 연산이 매우 빠르게 수행된다.
Java에서는 HashSet, TreeSet, LinkedHashSet 등이 대표적인 집합 자료구조다.
2. 집합의 특징
- 중복 없음: 동일한 요소는 한 번만 저장
- 순서 없음 (HashSet 기준)
- 빠른 검색: 평균 O(1) 시간 복잡도 (Hash 기반)
3. 집합의 종류와 구현
3.1 HashSet (해시 기반)
- 가장 일반적인 Set 구현
- 순서 보장 없음
3.2 TreeSet (이진 탐색 트리 기반)
- 자동 정렬 (오름차순)
- 삽입, 삭제, 탐색: O(log n)
3.3 LinkedHashSet
- 삽입 순서 유지
- HashSet + 순서
4. 집합의 기본 연산 (Java)
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.contains("apple")); // true set.remove("banana"); System.out.println(set); // [apple] } }
5. 집합의 시간 복잡도
연산 HashSet (평균) TreeSet 삽입 O(1) O(log n) 삭제 O(1) O(log n) 검색 O(1) O(log n) - HashSet: 빠른 속도, 순서 없음
- TreeSet: 정렬 필요 시 선택
6. 집합의 활용 사례
- 중복 제거: 데이터 필터링
- 빠른 포함 여부 확인
- 합집합, 교집합, 차집합 연산
- 중복 없는 리스트 생성
- 추천 시스템, 데이터 분석
7. 집합 vs 리스트
항목 집합(Set) 리스트(List) 중복 허용 불가 가능 순서 없음 (HashSet) 유지 검색 속도 빠름 (O(1) 평균) 느림 (O(n)) 활용 포함 여부 확인 순서 기반 처리 8. 결론
집합(Set)은 중복 없는 데이터 관리와 빠른 검색이 필요한 상황에서 필수적으로 사용되는 자료구조다. 상황에 따라 HashSet, TreeSet, LinkedHashSet 중 적절한 타입을 선택해 활용하는 것이 중요하며, 특히 집합 연산과 중복 제거에 강력한 효과를 발휘한다.
'자료구조' 카테고리의 다른 글
트라이(Trie): 문자열 탐색에 특화된 자료구조 (0) 2025.07.14 맵(Map): 키-값 쌍을 저장하는 자료구조 (1) 2025.07.13 해시(Hash): 빠른 데이터 검색을 위한 자료구조 (1) 2025.07.11 그래프(Graph): 복잡한 관계를 표현하는 자료구조 (2) 2025.07.10 레드-블랙 트리(Red-Black Tree): 균형 이진 탐색 트리 (2) 2025.07.09