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의 속성을 그대로 물려받아 중복된 값을 허용하지 않고, 저장 순서를 유지하지 않는다.
- 중복된 값 판단 프로세스
- add(Object o) 를 통해 객체를 저장하고자 한다.
- 저장하고자 하는 객체 o의 해시코드를 hashCode() 메서드를 통해 얻어낸다.
- Set이 저장하고 있는 모든 객체들의 해시코드를 hashCode() 메서드를 통해 얻어낸다.
- 저장하고자 하는 객체의 hashCode와 Set에 이미 저장되어져 있던 객체들의 해시코드를 비교하여 같은 해시코드가 있는지 검색한다.
- 만약, 같은 해시코드를 갖는 객체가 존재한다면 5번 과정으로 넘어간다.
- 같은 해시코드를 가진 객체가 존재하지 않는다면 Set에 객체가 추가되며 true를 리턴한다.
- equals() 메서드를 통해 객체를 비교한다.
- true가 리턴된다면 대상의 내용 자체도 같은 것이기 때문에 false를 리턴한다.
- 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 |