자료구조

Set과 주요 메서드

정재익 2025. 7. 24. 01:20

Collection 인터페이스는 java.util 패키지의 컬렉션 프레임워크의 핵심 인터페이스 중 하나다.

이 인터페이스는 자바에서 다양한 컬렉션을 다루기 위한 메서드를 정의한다.

Collection 인터페이스는 List, Set, Queue와 같은 다양한 하위 인터페이스 들과 함께 사용된다.

 

Set 인터페이스는 Collection 인터페이스의 하위 요소다 중복을 허용하지 않는 유일한 요소의 집합을 나타낸다. 순서를 보장하지 않으며, 특정 요소가 집합에 있는지 여부 확인에 최적화 되어있다,

Set인터페이스는 HashSet, LinkedHashSet, TreeSet 등의 여러 구현 클래스를 가지고 있으며 각 클래스는 Set 인터페이스를 구현하며 각각의 특성을 지니고 있다.

 

Set 인터페이스의 주요 메서드

메서드 설명

add(E e) 지정된 요소를 세트에 추가함 (이미 존재하면 추가하지 않음).
addAll(Collection<? extends E> c) 지정된 컬렉션의 모든 요소를 세트에 추가함.
contains(Object o) 세트가 지정된 요소를 포함하고 있는지 여부를 반환함.
containsAll(Collection<?> c) 세트가 지정된 컬렉션의 모든 요소를 포함하고 있는지 여부를 반환함.
remove(Object o) 지정된 요소를 세트에서 제거함.
removeAll(Collection<?> c) 지정된 컬렉션에 포함된 요소를 세트에서 모두 제거함.
retainAll(Collection<?> c) 지정된 컬렉션에 포함된 요소만을 유지하고 나머지 요소는 제거함.
clear() 세트에서 모든 요소를 제거함.
size() 세트에 있는 요소의 수를 반환함.
isEmpty() 세트가 비어 있는지 여부를 반환함.
iterator() 세트의 요소에 대한 반복자를 반환함.
toArray() 세트의 모든 요소를 배열로 반환함.
toArray(T[] a) 세트의 모든 요소를 지정된 배열로 반환함.

 

HashSet

해시 자료 구조를 사용해 요소를 저장

요소는 특정한 순서가 없다

추가 삭제 검색 O(1)

데이터의 유일성만 중요하고 순서가 중요치 않은 경우에 적합

 

LinkedHashSet

해시셋에 연결 리스트를 추가해서 요소들의 순서를 유지한다.

요소들은 추가된 순서대로 유지된다. 순서대로 조회시 요소들이 추가된 순서대로 반환된다

HashSet처럼 주요 연산에 대해 O(1)이다 다만 연결 링크를 유지해야 하기 때문에 해시셋 보다는 조금 더 무겁다

데이터의 유일성과 함께 삽입 순서를 유지해야 할 때 적합

 

TreeSet

이진 탐색 트리를 개선한 레드 블랙 트리를 내부에서 사용

요소들은 정렬된 순서로 저장 순서의 기준은 Comparator로 변경 가능

주요 연산은 0(logN) 해시셋보단 느리다

데이터를 정렬된 순서로 유지하면서 집합의 특성을 유지해야 할 때 사용

범위 검색이나 정렬된 데이터가 필요한 경우에 유용

입력된 순서가 아니라 데이터 값의 순서다

3,1,2를 순서대로 입력해도 1,2,3 순서로 출력

 

트리구조는 노드마다 왼쪽 오른쪽 노드를 알고있다

검색시 중앙에 값과 비교해 절반으로 쪼개가면서 검색한다

따라서 O(n)인 리스트의 검색보다는 빠르고 O(1)인 해시셋의 검색보다는 느리다

O(logN)이다

트리는 최악의 경우 O(N)이 나오지만 레드 블랙 트리를 사용해서 균형을 지속해서 유지 따라서 최악의 경우에도 O(logN)을 보장한다.

'자료구조' 카테고리의 다른 글

Stack, Queue, Deque  (0) 2025.07.24
Map과 자주쓰이는 메서드  (0) 2025.07.24
HashSet  (0) 2025.07.24
해시  (0) 2025.07.24
배열리스트 vs 연결리스트 성능 비교  (0) 2025.07.24