Set<E>
>의미 및 특징
: 집합을 의미함
: 요소의 중복을 허용하지 않고, 저장 순서를 유지하지 않는 인터페이스
: HashSet, TreeSet
HashSet
>HashSet의 문법 구조
HashSet<E> 참조변수명= new HashSet<E>(); //1
HashSet<E> 참조변수명= new HashSet<E>(int initialCapacity); //2
HashSet<E> 참조변수명= new HashSet<E>(int intitialCapacity, float loadFactor); //3
HashSet<E> 참조변수명= new HashSet<E>(Collection c); //4
//1: 기본 생성자
//2: 초기 용량을 지정하여 생성
//3: 초기 용량과 loadFactor를 지정하여 생성
//4: 컬렉션을 HashSet으로 변환
/*
loadFactor
: 저장 용량이 차기 전에 미리 용량을 확보하기 위한 요소
: default loadFactor = 0.75
(예시) loadFactor = 0.7이면, 저장 용량이 70%차면 용량을 2배로 확장시킨다.
*/
>의미 및 특징
: Set 인터페이스를 구현한 컬렉션 클래스
: 중복된 값을 허용하지 않고, 저장 순서도 유지하지 않음.
>중복 값을 판단하는 과정
1. add()메서드를 통해 객체를 저장하고자함.
2. hashCode()메서드를 통해 저장하고자 하는 객체의 해시코드를 추출.
3. hashCode()메서드를 통해 Set에 저장된 모든 객체들의 해시코드를 얻어냄.
4. 같은 해시코드가 있는지 비교
5. 같은 해시코드가 없다면, add()메서드가 true를 반환
6. 같은 해시코드가 있다면, equals()메서드를 통해 객체를 비교함.
7. equals()메서드가 true를 반환하면 중복 객체이므로 add()메서드는 false를 반환하며 Set에 객체가 추가되지 않음.
8. equals()메서드가 false를 반환하면 중복 객체가 아니므로 add()메서드가 truew를 반환하며 Set에 객체가 추가됨.
>공식 문서
https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html
TreeSet
>TreeSet의 문법 구조
TreeSet<E> 참조 변수명 = new TreeSet<E>(); //1
TreeSet<E> 참조 변수명 = new TreeSet<E>(Collection<E> c); //2
TreeSet<E> 참조 변수명 = new TreeSet<E>(Comparator<E> comparator); //3
TreeSet<E> 참조 변수명 = new TreeSet<E>(SortedSet<E> s); //4
//1: 기본 생성자
//2: 주어진 컬렉션을 TreeSet으로 변환
//3: 주어진 정렬 조건(Comparator)으로 정렬하는 TreeSet 생성
//4: 주어진 SortedSet을 구현한 컬렉션을 저장하는 TreeSet 생성
>의미 및 특징
: Set 인터페이스를 구현한 컬렉션 클래스
: 중복된 값을 허용하지 않고, 저장 순서도 유지하지 않음.
: 정렬과 검색에 특화된 자료 구조
: 이진 탐색 트리 형태로 데이터 저장.
: 하나의 노드(node)에서 최대 두 개의 노드와 연결되는 트리 구조
: 최상위 노드를 루트(root)라고함.
: 이진 탐색 트리의 특징 때문에 객체를 저장하면 자동으로 사전 편찬 순에 따라 오름차순으로 정렬된다.
//이진 탐색 트리의 특징
//갈라진 노드 중 왼쪽의 노드의 값은 상위 노드보다 같거나 작고, 오른쪽의 노드의 값은 상위 노드보다 같거나 크다.
>공식 문서
https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html
'코드스테이츠_국비교육 > [Section1]' 카테고리의 다른 글
18.01_람다_22.09.15 (0) | 2022.09.15 |
---|---|
16.10_컬렉션 프레임워크[Map]_22.09.13 (0) | 2022.09.15 |
16.08_컬렉션 프레임워크[List<E>]_22.09.13 (0) | 2022.09.15 |
16.07_컬렉션 프레임워크[개요]_22.09.13 (0) | 2022.09.15 |
16.06_예외 처리_22.09.13 (0) | 2022.09.15 |