👉 HashSet
- Set인터페이스를 구현한 대표적인 컬렉션 클래스
- 순서를 유지하려면, LinkedHashSet클래스를 사용
👉 TreeSet- 범위 검색과 정렬에 유리한 컬렉션 클래스 (from ~ to)
- HashSet보다 데이터 추가, 삭제 시간이 더 걸림
HashSet()
HashSet(Collection c) - 생성자 가짐
HashSet(int initialCapacity) - 초기용량(보통 2배로 늘림)
HashSet(int initialCapacity, float loadFactor) - float loadFactor는 언제 2배로 늘릴것인지
boolean add(Object o) - 추가
boolean addAll(Collection c) - 합집합
boolean remove(Object o) - 삭제
boolean removeAll(Collection c) - 교집합
boolean retainAll(Collection c) - 조건부삭제(차집합)
void clear() - 모두삭제
boolean contains(Object o) - 포함되어있는지?
boolean containsAll(Collection c) - 여러객체 모두 포함?
lterator iterator()
boolean isEmpty() - 비었는지?
int size() - 저장된 객체수
Object[] toArray() - 객체배열로 반환
Object[] toArray(Object[] a) - 객체배열로 반환
- 이진 탐색 트리(binary search tree)로 구현
- 범위 탐색과 정렬에 유리
- 이진 트리는 모든 노드가 최대 2개(0~2)의 하위 노드를 갖음
각 요소(node)가 나무(tree)형태로 연결(LinkedList의 변형)
- 부모보다 작은 값은 왼쪽, 큰 값은 오른쪽에 저장
- 데이터가 많아질수록 추가, 삭제 시간이 더 걸림(비교횟수증가)
👉 HashMap
👉 TreeMap
🧒해싱(hashing)이란??
- 해시함수(hash function)로 해시테이블(hash table)에 데이터를 저장 검색
- 해시테이블은 배열과 링크드 리스트가 조합된 형태
- 컬렉션을 위한 메서드(static)를 제공
- 컬렉션 채우기, 복사, 정렬, 검색 - fill(), copy(), sort(), binarySearch() 등
- 컬렉션의 동기화 - synchronizedXXX()
- 변경불가(readOnly) 컬렉션 만들기 - unmodifiableXXX()
- 싱글톤 컬렉션 만들기 - singletonXXX()
(객체 1개만 저장 가능)
- 한 종류의 객체만 저장하는 컬렉션 만들기 - checkedXXX()
👶 출처
자바의 정석 책 & 유튜브