Java

Java_컬렉션 자료구조_Set 컬렉션

ssmm95 2024. 10. 17. 17:55

Set 컬렉션

: 순서와 상관없이 중복을 허용하지않는 요소들의 집한을 관리하기 위한 인터페이스이다 

객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있다 

 

- 동일한 요소를 중복 저장 할 수 없고 이미 존재하는 요소를 추가하려고하면 저장되지 않는다

- 요소가 추가되는 순ㅅ를 보장하지 않고 실제 출력될 때 순서가 다를 수 있다 

- 중복이 없기 때문에 특정 요소가 존재하는지에 대헤 여부를 빠르게 확인 가능하다 

 

구현 클래스설명 특징
HashSet 가장 많이 사용되는 Set 구현체로, 해시 테이블을 이용해 요소를 저장 - 순서가 보장되지 않음
- 빠른 검색 속도
- null 요소 허용
LinkedHashSet HashSet과 비슷하지만, 요소가 추가된 순서를 유지 - 삽입 순서 유지
- null 요소 허용
- 성능은 HashSet보다 조금 느림
TreeSet 요소를 정렬된 순서로 저장해요. 내부적으로 이진 탐색 트리(Red-Black Tree) 구조를 사용 - 오름차순 정렬
- 정렬 기준에 따라 정렬 가능 (Comparator 사용)
- null 요소 허용하지 않음

 

비교항목 HashSet LinkedHashSet TreeSet
중복 허용 여부 중복 허용하지 않음 중복 허용하지 않음 중복 허용하지 않음
순서 보장 여부 순서 보장하지 않음 삽입 순서 보장 정렬된 순서 유지
성능 검색, 삽입, 삭제 모두 빠름 검색, 삽입, 삭제 빠르지만 HashSet보다는 느림 검색, 삽입, 삭제 속도는 느리지만 정렬이 필요할 때 유용
정렬 X X 요소를 자동으로 정렬
null 허용 여부 허용 허용 허용하지 않음

 

기능 메서드(매개변수) 설명
객체 추가 add(E element) Set에 객체를 추가합니다. 만약 동일한 객체(중복)가 존재하면 추가되지 않고 false를 반환
addAll(Collection c) 주어진 컬렉션의 모든 요소를 Set에 추가합니다. 중복된 요소는 제외하고, 추가된 경우 true를 반환
객체 검색 boolean contains(Object o) 특정 객체가 Set에 존재하는지 여부를 확인합니다. 객체가 있으면 true, 없으면 false를 반환
isEmpty() Set이 비어 있는지 여부를 확인합니다. 비어 있으면 true, 그렇지 않으면 false를 반환.
Iterator<E>iterator() 저장된 객체를 한 번씩 가져오는 반복자 리턴
int size() 저장되어 있는 전체 객체 수 리턴
객체 삭제 boolean remove(Object o) Set에서 특정 객체를 삭제합니다. 삭제에 성공하면 true, 삭제할 객체가 없으면 false를 반환
void clear() Set의 모든 요소를 제거합니다. Set은 빈 상태가 된다