2019. 3. 4. 21:20
TreeSet, TreeMap은 이진 트리(binary tree)를 이용해서 계층적 구조(Tree 구조)를 가지면서 객체를 저장합니다.
# TreeSet
- 하나의 노드는 노드 값인 value와 왼쪽과 오른쪽 자식 노드를 참조하기 위한 두 개의 변수로 구성
- TreeSet에 객체를 저장하면 자동으로 정렬되는데 부모값과 비교해서 낮은 것은 왼쪽 노드에, 높은 것은 오른쪽 노드에 저장
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public class TreeSetExam1 { public static void main(String[] args) { TreeSet<Integer> treeSet = new TreeSet<Integer>(); for (int i = 1; i <= 10; i++) { treeSet.add(new Integer(i*10)); } Integer score = null; score = treeSet.first(); System.out.println("가장 낮은 점수: " + score); score = treeSet.last(); System.out.println("가장 높은 점수: " + score); score = treeSet.lower(new Integer(90)); System.out.println("90점 아래 점수: " + score); score = treeSet.higher(new Integer(90)); System.out.println("90점 위 점수: " + score); } } /********* 결과 ********* 가장 낮은 점수: 10 가장 높은 점수: 100 90점 아래 점수: 80 90점 위 점수: 100 */ | cs |
# TreeMap
- TreeSet과 차이점은 키와 값이 저장된 Map.Entry를 저장한다는 점
- TreeMap에 객체를 저장하면 자동으로 정렬되는데, 기본적으로 부모 키값과 비교해서 키 값이 낮은 것은 왼쪽 노드에, 키 값이 높은 것은 오른쪽 노드에 Map.Entry에 저장
★★API 그림 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import java.util.Map; import java.util.TreeMap; public class TreeMapExam1 { public static void main(String[] args) { TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>(); treeMap.put(new Integer(90), "Jack"); treeMap.put(new Integer(77), "Mike"); treeMap.put(new Integer(82), "Jolie"); treeMap.put(new Integer(93), "Sminoph"); treeMap.put(new Integer(67), "Neil"); treeMap.put(new Integer(55), "Max"); Map.Entry<Integer, String> entry = null; entry = treeMap.firstEntry(); System.out.println("가장 낮은 점수: " + entry.getKey() + "-" + entry.getValue()); entry = treeMap.lastEntry(); System.out.println("가장 높은 점수: " + entry.getKey() + "-" + entry.getValue()); entry = treeMap.lowerEntry(new Integer(95)); System.out.println("95점 아래 점수: " + entry.getKey() + "-" + entry.getValue()); while (!treeMap.isEmpty()) { entry = treeMap.pollFirstEntry(); System.out.println(entry.getKey() + "-" + entry.getValue() + " (남은 객체 수: " + treeMap.size() + ")"); } } } /********* 결과 ********* 가장 낮은 점수: 55-Max 가장 높은 점수: 93-Sminoph 95점 아래 점수: 93-Sminoph 55-Max (남은 객체 수: 5) 67-Neil (남은 객체 수: 4) 77-Mike (남은 객체 수: 3) 82-Jolie (남은 객체 수: 2) 90-Jack (남은 객체 수: 1) 93-Sminoph (남은 객체 수: 0) */ | cs |
# 참고사이트
★★https://palpit.tistory.com/657
https://lapan.tistory.com/61
https://hackersstudy.tistory.com/26
https://12bme.tistory.com/91
'Java' 카테고리의 다른 글
Enum 사용법 및 예제 (0) | 2019.04.29 |
---|---|
[자바/Java] Scanner와 BufferedReader 차이 (0) | 2019.03.03 |
[자바/JAVA] StringTokenizer 사용법 정리 (0) | 2019.03.03 |
[자바/JAVA] String, StringBuilder, StringBuffer 차이 정리 (0) | 2019.03.03 |
[자바/JAVA] String to int, int to String 변환하는 방법 (0) | 2019.03.03 |