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은 저장할 때 이미 정렬하기 때문에 값을 읽어올 때 따로 정렬할 필요 없음.