그해
그래도해야지
그해
  • 그래도 해야지 (71)
    • Java (26)
    • Spring (8)
    • Golang (3)
    • CS (0)
      • 서버 (9)
      • 네트워크 (4)
      • 운영체제 (1)
      • WEB (0)
      • 데이터베이스 (6)
      • 자료구조 (1)
      • 보안 (3)
      • 알고리즘 (9)
    • 삽질 (0)
    • 회고 및 생각 (0)
hELLO · Designed By 정상우.
그해

그래도해야지

Java

[JAVA] TreeMap

2023. 12. 7. 11:18

1. TreeMap

TreeMap은 이전검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장한다. 그래서 검색과 정렬에 적합하다. 이진트리를 기반으로 한 Map컬렉션이며, TreeSet과의 차이점은 TreeSet은 값만 저장 , TreeMap은 키와 값 Map.Entry에 저장한다.

검색의 관한 부분에서는 HashMap과 TreeMap 중 HashMap이 검색성능이 더 뛰어나므로 HashMap을 사용하는 것이 좋다. 다만 정렬이 필요한 경우에는 TreeMap을 사용하는 것이 좋다.

메서드 설명

메서드 설명
TreeMap() TreeMap 객체 생성
TreeMap(Comparator c) 지정된 Comparator을 기준으로 정렬하는 TreeMap 객체 생성
TreeMap(Map m) 주어진 Map에 저장된 모든 요소를 포함하는 TreeMap 생성
TreeMap(SortedMap m) 주어진 SortedMap에 저장된 모든 요소를 포함하는 TreeMap 생성
Map.Entry ceilingEntry(Object key) 지정된 key와 일치하거나 큰 것중 제일 작은 것의 키와 값의 쌍(Map.Entry)를 반환. 없으면 null 반환
Object ceilingKey(Object key) 지정된 key와 일치하거나 큰 것중 제일 작은 것의 키를 반환. 없으면 null 반환
void clear() TreeMap에 저장된 모든 객체를 제거
Object clone() 현재 TreeMap에 저장된 모든 객체를 제거
Comparator comparator() TreeMap의 정렬기준이 되는 Comparator를 반환. 지정되지 않았다면 null 반환
boolean containsKey(Object key) TreeMap에 지정된 키가 포함되어있는지 알려줌.
boolean containsValue(Object value) TreeMap에 지정된 값이 포함되어있는지 알려줌.
NavigableSet descendingKeySet() TreeMap에 저장된 키를 역순으로 정렬해 NavigableSet에 담아 반환
Set entrySet() TreeMap에 저장된 키와 값을 엔트리의 형태로 set에 저장해 반환
Map.Entry firstEntry() TreeMap에 저장된 첫번째(가장 작은) 키와 값의 쌍을 반환
Object firstKey() TreeMap에 저장된 첫번째(가장 작은) 키를 반환
Map.Entry floorEntry() 지정된 Key와 일치하거나 작은 것 중에서 제일 큰 키의 쌍을 반환. 없으면 null
Object floorKey(Object Key) 지정된 key와 일치하거나 작은 것 중에서 제일 큰 기를 반환. 없으면 null
Object get(Object key) 지정된 키의 값을 반환
SortedMap headMap(Object toKey) TreeMap에 저장된 첫번째 요소부터 지정된 범위에 속한 모든 요소가 담긴 sortedMap을 반환 (toKey 미포함)
  • TreeMap 예제 1
public class TreeMapEx1 {
    public static void main(String[] args) {
        String[] data = {"A", "B", "C", "D", "A", "B", "B", "B", "B"};
        TreeMap map = new TreeMap<>();

        for (int i = 0; i < data.length; i++) {
            if (map.containsKey(data[i])) {
                Integer value = (Integer) map.get(data[i]);
                map.put(data[i], value + 1);
            } else {
                map.put(data[i], 1);
            }
        }

        Iterator it = map.entrySet().iterator();
        System.out.println("기본정렬"); //TreeMap이라 키 오름차순 정렬
        while (it.hasNext()) {
            Map.Entry entry = (Map.Entry) it.next();
            int value = (int) entry.getValue();
            System.out.println(entry.getKey() + ":" + printBar('#', value) + " " + value);
        }
        System.out.println();
    }
    public static String printBar(char ch, int value) {
        char[] bar = new char[value];

        for (int i = 0; i < bar.length; i++) {
            bar[i] = ch;
        }
        return new String(bar);
    }
}



출처 : 자바의 정석

'Java' 카테고리의 다른 글

[JAVA] 진법과 2의 보수법  (1) 2023.12.07
[JAVA] 변수와 변수의 타입  (1) 2023.12.07
[JAVA] HashMap과 Hashtable  (0) 2023.12.07
[JAVA] TreeSet  (0) 2023.12.07
[Java] HashSet  (0) 2023.12.06
    'Java' 카테고리의 다른 글
    • [JAVA] 진법과 2의 보수법
    • [JAVA] 변수와 변수의 타입
    • [JAVA] HashMap과 Hashtable
    • [JAVA] TreeSet
    그해
    그해
    그래도 공부는 해야지

    티스토리툴바