HashSet
HashSet
- Set인터페이스를 구현한 대표적인 컬렉션 클래스
- 순서를 유지하려면, LinkedHashSet클래스를 사용하면 된다.
메소드 | 의미 |
---|---|
HashSet() | 생성자 |
HashSet(Collection c) | 지정된 컬렉션에 모든 객체 저장 |
HashSet(int initialCapacuty) | 초기용량 |
HashSet(int initialCapacity, float loadFactor) | 언제 용량을 늘릴 것인가 |
boolean add(Object o) | 추가 |
boolean add(Collection c) | 추가, 합집합 |
boolean remove(Object o) | 삭제 |
boolean removeAll(Collection c) | 삭제, 교집합 |
boolean retainAll(Collection c) | 조건부삭제, 차집합 |
void clear() | 모두 삭제 |
boolean contains(Object o) | 포함되어있는지? |
boolean containsAll(Collection c) | 컬렉션에 담긴 여러객체가 모두 포함되어 있는지 |
iterator iterator | 컬렉션요소를 읽어옴 |
boolean isEmpty() | 비었는지? |
int size() | 저장된 객체수 |
Object[ ] toArray() | 셋에 저장된 객체배열로 반환 |
Object[] toArray(Object[] a) | 셋에 저장된 객체배열로 반환 |
예제
- 중복된 값은 저장X,
1
은 문자열, 숫자열 하나씩 있기 때문에 true를 반환
- Set은 정렬될 수 없기떄문에 List로 형변환 후
sort()
사용해서 정렬
- HastSet은 객체를 저장하기전에 기존에 같은 객체가 있는지 확인 / 같은 객체가 없으면 저장, 있으면 저장X
- boolean add(Object o)는 저장할 객체의 equals()와 hashCode()를 호출 / equals()와 hashCode()가 오버라이딩 되어 있어야 함
- 교집합, 합집합, 차집합
TreeSet
- 범위 검색과 정렬에 유리한 컬렉션 클래스
- HashSet보다 데이터추가, 삭제에 시간이 더 걸림
- 이진 탐색 트리(binary search tree)로 구현.범위 탐색과 정렬에 유리
- 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖음
1 | class TreeNode { |
2 | TreeNode left; // 왼쪽 자식노드 |
3 | Object element; // 저장할 객체 |
4 | TreeNode right; // 오른쪽 자식노드 |
5 | } |
생성자 또는 메서드 | 설명 |
---|---|
TreeSet() | 기본 생성자 |
TressSet(Collection c) | 주어진 컬렉션을 저장하는 TreeSet을 생성 |
Treeset(Comparator comp) | 주어진 정렬기준으로 정렬하는 TreeSet을 생성 |
Obejct first() | 정렬된 순서에서 첫 번째 객체를 반환 |
Object last() | 정렬된 순서에서 마지막 객체를 반환 |
Object ceiling(Object o) | 지정된 객체와 같은 객체를 반환. 없으면 큰 값을 가진 객체 중 제일 가까운 값의 객체를 반환. 없으면 null |
Object floor(Object o) | 지정된 객체와 같은 객체를 반환. 없으면 작은 값을 가진 객체 중 제일 가까운 값의 객체를 반환. 없으면 null |
Object higher(Obejct o) | 지정된 객체보다 큰 값을 가진 객체 중 제일 가까운 값의 객체를 반환.없으면 null |
Object lower(Object o) | 지정된 객체보다 작은 값을 가진 객체 중 제일 가까운 값의 객체를 반환.없으면 null |
SortedSet subSet(Object fromElement, Object toElement) | 범위 검색이 결과를 반환한다. |
SortedSet headSet(Object toElement) | 지정된 객체보다 작은 값의 객체들을 반환한다. |
SortedSet tailSet(Object fromElement) | 지정된 객체보다 큰 값의 객체를 반화한다. |
이진 탐색 트리
- 부모보다 작은 값은 왼쪽, 큰 값은 오른쪽에 저장
- 데이터가 많아질수록 추가, 삭제에 시간이 더 걸림(비교 획수 증가)
트리 순회(tree traversal)
- 이진트리의 모든 노드를 한번씩 읽는 것을 트리 순회라고 함
- 전위, 중위, 후위 순회법이 있으며, 중위 순회하면 오름차순으로 정렬됨