본문 바로가기

Language/Java

[Java] Set 인터페이스

Set<E> 인터페이스

  • 수학에서의 집합과 비슷하다.
  • 요소의 중복을 허용하지 않고, 저장 순서를 유지하지 않는 컬렉션
기능 리턴 타입 메소드 설명
객체 추가 boolean add(Object element) 주어진 객체를 추가하고, 성공하면 true를 중복 객체면 false를 반환한다.
객체 검색 boolean contains(Object o) 주어진 객체가 Set에 존재하는지 확인한다.
  boolean isEmpty() Set이 비었는지 확인한다.
  Iterator Iterator() 저장된 객체를 하나씩 읽어오는 반복자를 리턴한다.
  int size() 저장되어 있는 전체 객체의 수를 리턴한다.
객체 삭제 void clear() Set에 저장된 모든 객체를 삭제한다.
  boolean remove(Object o) 주어진 객체를 삭제한다.

 

HashSet

  • Set 인터페이스를 구현한 가장 대표적인 컬렉션 클래스로 Set의 속성을 그대로 물려받아 중복된 값을 허용하지 않고, 저장 순서를 유지하지 않는다.
  • 중복된 값 판단 프로세스
    1. add(Object o) 를 통해 객체를 저장하고자 한다.
    2. 저장하고자 하는 객체 o의 해시코드를 hashCode() 메서드를 통해 얻어낸다.
    3. Set이 저장하고 있는 모든 객체들의 해시코드를 hashCode() 메서드를 통해 얻어낸다.
    4. 저장하고자 하는 객체의 hashCode와 Set에 이미 저장되어져 있던 객체들의 해시코드를 비교하여 같은 해시코드가 있는지 검색한다.
      1. 만약, 같은 해시코드를 갖는 객체가 존재한다면 5번 과정으로 넘어간다.
      2. 같은 해시코드를 가진 객체가 존재하지 않는다면 Set에 객체가 추가되며 true를 리턴한다.
    5. equals() 메서드를 통해 객체를 비교한다.
      1. true가 리턴된다면 대상의 내용 자체도 같은 것이기 때문에 false를 리턴한다.
      2. false가 리턴되다면 대상의 내용은 다르기 때문에 true를 리턴한다.

TreeSet

  • 이진 탐색 트리 형태로 데이터를 저장한다.
    • 이진 탐색 트리 : 하나의 부모노드가 최대 두개의 자식 노드와 연결되는 이진 트리의 일종으로 정렬과 검색에 특화된 자료구조
    • 최상위 노드를 루트라고 하며, 모든 왼쪽 자식의 값이 루트나 부모보다 작고, 모든 오른쪽 자식의 값이 루트나 부모보다 큰 값을 가진다.
  • 기본 정렬 방식은 오름차순이다.
  • first(), last(), higher(String s), subSet(String s)

'Language > Java' 카테고리의 다른 글

[Java] Queue 인터페이스  (0) 2023.07.05
[Java] Stack 클래스  (0) 2023.07.05
[Java] List<E> 인터페이스  (0) 2023.05.15
[Java] Map 인터페이스  (0) 2023.05.15
[Java] Collection 프레임워크  (0) 2023.05.15