Java

[Java] HashSet, TreeSet

hrming 2023. 1. 28. 17:46

HashSet : 순서x,  중복x

- HashSet은 객체를 저장하기 전에 기존에 같은 객체가 있는 지 확인 (같은 객체가 없으면 저장, 있으면 저장하지 않음)

- boolean add(Obeject o)는 저장할 객체의 equals()와 hashcode()를 호출 함. equals()와 hashcode()가 오버라이딩 되어 이써야 함.

- 저장순서를 유지해야 할 경우, LinkedHashSet 사용

- 정렬이 필요할 경우, list에 담아서 sort(List list) 메서드 사용

 


TreeSet: 순서x, 중복x

- 이진탐색트리로, 부모노드의 왼쪽에는 부모노드의 값보다 작은 값을 그리고 오른쪽에는 부모노드의 값보다 큰 값을 저장

- 데이터가 많아질 수록 추가/삭제에 시간이 더 걸림 (비교횟수 증가) 

- 정렬, 검색, 범위검색에 높은 성능을 보이는 자료구조

- 이진트리는 링크드 리스트처럼 여러개의 노드가 서로 연결된 구조이며, 각 노드에 최대 2개(0~2개)의 노드를 연결 할 수 있음.

- 루트(root)라고 불리는 하나의 노드에서부터 시작해서 계속 확장해 나감.

- 각 요소(node)가 나무(tree)형태로 연결 (LinkedList의 변형)

- TreeSet은 저장할 때 이미 정렬하기 때문에 값을 읽어올 때 따로 정렬할 필요 없음.