프로그래밍/JAVA

[JAVA] TreeMap 이란

리신 2023. 1. 29. 23:37
반응형

TreeMap은 이진트리를 기반으로 한 Map 컬렉션이다.

TreeSet과의 차이점은 TreeSet은 값만 저장 한다.

하지만 TreeMap은 키와 값의 쌍으로 이루어진 데이터를 저장한다.

그래서 검색과 정렬에 적합한 컬렉션 클래스이다.

 

TreeMap은 일반적으로 HashMap보다 성능이 떨어진다.

TreeMap은 데이터를 저장할 때 즉시 정렬하기에 추가나 삭제가 HashMap보다 오래 걸린다.

하지만 정렬된 상태로 Map을 유지해야 하거나 정렬된 데이터를 조회해야 하는 범위 검색이 필요한 경우 TreeMap을 사용하는 것이 효율성면에서 좋다.

 


TreeMap 사용방법

 

TreeMap 선언

//TreeMap생성
TreeMap<Integer,String> tmap1 = new TreeMap<Integer,String>();

//타입 파라미터 생략가능
TreeMap<Integer,String> tmap2 = new TreeMap<>();

//tmap1의 모든 값을 가진 TreeMap생성
TreeMap<Integer,String> tmap3 = new TreeMap<>(tmap1);

//초기값 설정
TreeMap<Integer,String> tmap6 = new TreeMap<Integer,String>(){{
    put(1,"a");
}};

TreeMap 선언 시 HashMap과 다르지 않으나 선언 시 크기를 지정해줄 수는 없다.

 

 

TreeMap  값 추가

/* TreeMap생성 */
TreeMap<Integer,String> map = new TreeMap<Integer,String>(); 

/* 값 추가 */
map.put(1, "강아지"); 
map.put(2, "고양이");
map.put(3, "물고기");

TreeMap은 구조만 HashMap과 다를 뿐 기본적으로는 Map 인터페이스를 같이 상속받고 있으므로

기본적인 메소드의 사용법 자체는 HashMap과 동일하다.

 

 

TreeMap  값 삭제

/* TreeMap생성 */
TreeMap<Integer,String> map = new TreeMap<Integer,String>(); 

/* 값 추가 */
map.put(1, "강아지"); 
map.put(2, "고양이");
map.put(3, "물고기");

// key값 1 제거
map.remove(1); 

// 모든 값 제거
map.clear();

 

 

TreeMap  단일 값 출력

TreeMap<Integer,String> map = new TreeMap<Integer,String>(){{ // 초기값 설정
	/* 값 추가 */
    put(1, "강아지");
    put(2, "고양이");
    put(3, "물고기");
}};

System.out.println(map); // 전체 출력 : {1=강아지, 2=고양이, 3=물고기}
System.out.println(map.get(1)); // key값 1의 value얻기 : 강아지
System.out.println(map.firstEntry()); // 최소 Entry 출력 : 1=강아지
System.out.println(map.firstKey()); // 최소 Key 출력 : 1
System.out.println(map.lastEntry()); // 최대 Entry 출력: 3=물고기
System.out.println(map.lastKey()); // 최대 Key 출력 : 3

 

 

TreeMap  전체 값 출력

TreeMap<Integer,String> map = new TreeMap<Integer,String>(){{ // 초기값 설정
	/* 값 추가 */
    put(1, "강아지");
    put(2, "고양이");
    put(3, "물고기");
}};

//entrySet() 활용
for (Entry<Integer, String> entry : map.entrySet()) {
    System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}


/* 값 */
// [Key]:1 [Value]:강아지
// [Key]:2 [Value]:고양이
// [Key]:3 [Value]:물고기

// KeySet() 활용
for(Integer i : map.keySet()){ // 저장된 key값 확인
    System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}

/* 값 */
// [Key]:1 [Value]:강아지
// [Key]:2 [Value]:고양이
// [Key]:3 [Value]:물고기

 

 

전체 값 출력 (Iterator 사용)

TreeMap<Integer,String> map = new TreeMap<Integer,String>(){{ // 초기값 설정
	/* 값 추가 */
    put(1, "강아지");
    put(2, "고양이");
    put(3, "물고기");
}};
		
// entrySet().iterator()
Iterator<Entry<Integer, String>> entries = map.entrySet().iterator();
while(entries.hasNext()){
    Map.Entry<Integer, String> entry = entries.next();
    System.out.println("[Key]:" + entry.getKey() + " [Value]:" +  entry.getValue());
}
// [Key]:1 [Value]:강아지
// [Key]:2 [Value]:고양이
// [Key]:3 [Value]:물고기
		
//keySet().iterator()
Iterator<Integer> keys = map.keySet().iterator();
while(keys.hasNext()){
    int key = keys.next();
    System.out.println("[Key]:" + key + " [Value]:" +  map.get(key));
}
// [Key]:1 [Value]:강아지
// [Key]:2 [Value]:고양이
// [Key]:3 [Value]:물고기

 

 

참고 : java의 정석

반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[ JAVA ] 쓰레드란?  (0) 2023.02.21
[JAVA] Properties 란?  (0) 2023.01.31
[JAVA] LinkedList  (0) 2023.01.05
[JAVA] ArrayList 사용방법  (1) 2023.01.05
[JAVA] 컬렉션 프레임워크(collection framework)  (1) 2023.01.04