티스토리 뷰
Java에서 Set 인터페이스는 java.util 패키지의 일부로, 중복을 허용하지 않는 유일한 요소들을 저장하는데 사용됩니다. 이 인터페이스는 컬렉션 프레임워크의 일부이며, 순서에 의존하지 않는 데이터 집합을 관리하기 위해 설계되었습니다.
주요 특징
- 중복 허용 불가: Set에 같은 요소를 추가하려고 하면, 추가가 되지 않습니다. 즉, 모든 요소가 고유해야 하며, 이미 존재하는 요소를 추가할 경우 무시됩니다.
- 순서 보장하지 않음: Set은 요소들의 순서를 유지하지 않습니다. 요소들이 내부적으로 어떻게 저장되고 관리되는지는 Set을 구현하는 클래스에 따라 다릅니다. 따라서 요소들이 추가된 순서와 Set에서 요소를 순회할 때의 순서가 다를 수 있습니다.
- 값의 유일성: Set은 각 요소의 유일성을 보장합니다. 이는 주로 요소의 equals()와 hashCode() 메서드를 사용하여 결정됩니다. 두 객체가 같다고 판단되면, 둘 중 하나만 Set에 저장됩니다.
사용 예시
- 아이디 목록 관리: 사용자 아이디는 유일해야 하므로 Set을 사용하여 중복 없이 관리할 수 있습니다.
- 주민등록번호: 각 사람의 주민등록번호는 고유한 값이므로, 이를 Set에 저장하여 중복 등록을 방지할 수 있습니다.
- 직원 번호: 회사에서 각 직원에게 부여한 고유한 사번을 Set을 이용해 관리할 수 있습니다.
Collection
|
└── Set
├── HashSet
├── LinkedHashSet
└── TreeSet
HashSet : 해쉬 테이블에 원소를 저장하기 때문에 성능면에서 가장 우수하다. 하지만 원소들의 순서가 일정하지 않다.
LinkedHashSet : 해쉬 테이블과 연결 리스트를 결합한 것으로 원소들의 순서는 삽입되었던 순서와 같다. 약간의 비용을 들여 HashSet의 문제점인 순서의 불명확성을 제거한 방법이다.
TreeSet : 레드-블랙 트리에 원소를 저장한다. 값에 따라 순서가 결정되지만 HashSet 보다 느리다.
코드 예시)
주요 메서드
Set 인터페이스는 Java Collection Framework 내에서 중복을 허용하지 않는 유니크한 아이템들을 저장하는 데 사용됩니다.
- add(E e): 지정된 요소를 세트에 추가합니다. 요소가 세트에 이미 존재하는 경우는 추가되지 않습니다.
- boolean add(E e);
- 반환값: 요소가 세트에 성공적으로 추가되면 true, 이미 존재하는 경우는 false를 반환합니다.
- remove(Object o): 지정된 요소를 세트에서 제거합니다.
- boolean remove(Object o);
- 반환값: 요소가 세트에서 성공적으로 제거되면 true, 그렇지 않으면 false를 반환합니다.
- contains(Object o): 세트가 지정된 요소를 포함하고 있는지 여부를 확인합니다.
- boolean contains(Object o);
- 반환값: 요소가 세트에 존재하면 true, 그렇지 않으면 false를 반환합니다.
- size(): 세트에 저장된 요소의 수를 반환합니다.
- int size();
- 반환값: 세트에 있는 요소의 총 수를 반환합니다.
- isEmpty(): 세트가 비어 있는지 여부를 확인합니다.
- boolean isEmpty();
- 반환값: 세트가 비어 있으면 true, 하나 이상의 요소가 있으면 false를 반환합니다.
- clear(): 세트에서 모든 요소를 제거합니다.
- void clear();
- 이 메서드는 세트를 비워서 요소가 없는 상태로 만듭니다.
- iterator(): 세트의 요소에 접근할 수 있는 반복자(iterator)를 반환합니다.
- Iterator<E> iterator();
- 이 반복자를 사용하여 세트의 요소를 순차적으로 접근할 수 있습니다.
** 추가 메서드**
addAll() : 합집합
retainAll(): 교집합
코드 예시)
'Java' 카테고리의 다른 글
Java(Queue) (0) | 2024.05.19 |
---|---|
Java(Map 인터페이스) (0) | 2024.05.19 |
Java(List 인터페이스 및 제네릭) (0) | 2024.05.19 |
Java(Stack) (0) | 2024.05.19 |
Java(자료구조 및 Collections 클래스) (0) | 2024.05.06 |