티스토리 뷰

Java

Java(Set 인터페이스)

yoooon1212 2024. 5. 19. 18:51

Java에서 Set 인터페이스는 java.util 패키지의 일부로, 중복을 허용하지 않는 유일한 요소들을 저장하는데 사용됩니다. 이 인터페이스는 컬렉션 프레임워크의 일부이며, 순서에 의존하지 않는 데이터 집합을 관리하기 위해 설계되었습니다.

주요 특징

  1. 중복 허용 불가: Set에 같은 요소를 추가하려고 하면, 추가가 되지 않습니다. 즉, 모든 요소가 고유해야 하며, 이미 존재하는 요소를 추가할 경우 무시됩니다.
  2. 순서 보장하지 않음: Set은 요소들의 순서를 유지하지 않습니다. 요소들이 내부적으로 어떻게 저장되고 관리되는지는 Set을 구현하는 클래스에 따라 다릅니다. 따라서 요소들이 추가된 순서와 Set에서 요소를 순회할 때의 순서가 다를 수 있습니다.
  3. 값의 유일성: Set은 각 요소의 유일성을 보장합니다. 이는 주로 요소의 equals()와 hashCode() 메서드를 사용하여 결정됩니다. 두 객체가 같다고 판단되면, 둘 중 하나만 Set에 저장됩니다.

사용 예시

  • 아이디 목록 관리: 사용자 아이디는 유일해야 하므로 Set을 사용하여 중복 없이 관리할 수 있습니다.
  • 주민등록번호: 각 사람의 주민등록번호는 고유한 값이므로, 이를 Set에 저장하여 중복 등록을 방지할 수 있습니다.
  • 직원 번호: 회사에서 각 직원에게 부여한 고유한 사번을 Set을 이용해 관리할 수 있습니다.

 

Collection
   |
   └── Set
        ├── HashSet
        ├── LinkedHashSet
        └── TreeSet

 

HashSet : 해쉬 테이블에 원소를 저장하기 때문에 성능면에서 가장 우수하다. 하지만 원소들의 순서가 일정하지 않다.

LinkedHashSet : 해쉬 테이블과 연결 리스트를 결합한 것으로 원소들의 순서는 삽입되었던 순서와 같다. 약간의 비용을 들여 HashSet의 문제점인 순서의 불명확성을 제거한 방법이다. 

TreeSet : 레드-블랙 트리에 원소를 저장한다. 값에 따라 순서가 결정되지만 HashSet 보다 느리다.

 

코드 예시)

HashSet 출력 결과(순서 상관X)
LinkedHashSet 출력 결과(입력 순서대로 출력)
TreeSet 출력 결과(알파벳 순서대로 출력)

 

주요 메서드

 

Set 인터페이스는 Java Collection Framework 내에서 중복을 허용하지 않는 유니크한 아이템들을 저장하는 데 사용됩니다.

  1. add(E e): 지정된 요소를 세트에 추가합니다. 요소가 세트에 이미 존재하는 경우는 추가되지 않습니다.
    • boolean add(E e);
    • 반환값: 요소가 세트에 성공적으로 추가되면 true, 이미 존재하는 경우는 false를 반환합니다.
  2. remove(Object o): 지정된 요소를 세트에서 제거합니다.
    • boolean remove(Object o);
    • 반환값: 요소가 세트에서 성공적으로 제거되면 true, 그렇지 않으면 false를 반환합니다.
  3. contains(Object o): 세트가 지정된 요소를 포함하고 있는지 여부를 확인합니다.
    • boolean contains(Object o);
    • 반환값: 요소가 세트에 존재하면 true, 그렇지 않으면 false를 반환합니다.
  4. size(): 세트에 저장된 요소의 수를 반환합니다.
    • int size();
    • 반환값: 세트에 있는 요소의 총 수를 반환합니다.
  5. isEmpty(): 세트가 비어 있는지 여부를 확인합니다.
    • boolean isEmpty();
    • 반환값: 세트가 비어 있으면 true, 하나 이상의 요소가 있으면 false를 반환합니다.
  6. clear(): 세트에서 모든 요소를 제거합니다.
    • void clear();
    • 이 메서드는 세트를 비워서 요소가 없는 상태로 만듭니다.
  7. 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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함