0%

HashTree

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를 반환

image

  • Set은 정렬될 수 없기떄문에 List로 형변환 후 sort()사용해서 정렬

image

  • HastSet은 객체를 저장하기전에 기존에 같은 객체가 있는지 확인 / 같은 객체가 없으면 저장, 있으면 저장X
  • boolean add(Object o)는 저장할 객체의 equals()와 hashCode()를 호출 / equals()와 hashCode()가 오버라이딩 되어 있어야 함

image

  • 교집합, 합집합, 차집합

image

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) 지정된 객체보다 큰 값의 객체를 반화한다.

image

image

image

이진 탐색 트리

  • 부모보다 작은 값은 왼쪽, 큰 값은 오른쪽에 저장
  • 데이터가 많아질수록 추가, 삭제에 시간이 더 걸림(비교 획수 증가)

트리 순회(tree traversal)

  • 이진트리의 모든 노드를 한번씩 읽는 것을 트리 순회라고 함
  • 전위, 중위, 후위 순회법이 있으며, 중위 순회하면 오름차순으로 정렬됨