반응형
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 |