소개
Java 의 TreeMap 클래스는 Java Collection Interface 의 일부이며 Map 인터페이스를 구현합니다. 다른 Map 구현과는 달리, 키 - 값 쌍을 정렬된 순서로 저장합니다. 이 Lab 에서는 Java 프로그램에서 TreeMap 클래스를 효과적으로 사용하는 방법을 배우게 됩니다.
TreeMap 생성하기
- 텍스트 편집기를 열고
~/project디렉토리에TreeMapDemo.java라는 새 파일을 생성합니다. - 필요한 패키지를 가져옵니다:
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
- TreeMap 객체를 생성합니다:
Map<Integer, String> map = new TreeMap<>();
TreeMap 에 요소 추가하기
put()메서드를 사용하여 TreeMap 에 요소를 추가합니다:
map.put(1, "John");
map.put(2, "Mary");
map.put(3, "Peter");
main 메서드 안에 이 코드를 추가하십시오.
TreeMap 출력하기
- for-each 루프를 사용하여 TreeMap 을 순회합니다:
for(Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
사용자 정의 정렬 사용하기
Employee라는 새로운 클래스를 생성합니다:
class Employee implements Comparable<Employee> {
private int id;
private String name;
public Employee(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public int compareTo(Employee e) {
return this.id - e.getId();
}
}
- TreeMap 에 몇몇 Employee 를 추가합니다:
Map<Employee, String> employeeMap = new TreeMap<>();
employeeMap.put(new Employee(3, "John"), "IT");
employeeMap.put(new Employee(2, "Mary"), "HR");
employeeMap.put(new Employee(1, "Peter"), "Finance");
- 이제 TreeMap 을 순회하면, employee ID 를 기준으로 정렬됩니다:
for(Map.Entry<Employee, String> entry : employeeMap.entrySet()) {
System.out.println(entry.getKey().getId() + " "
+ entry.getKey().getName() + " "
+ entry.getValue());
}
정렬을 위한 Comparator 사용법
TreeMapDemo클래스에서 사용자 정의 Comparator 를 정의합니다:
class DescendingOrder implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}
- 사용자 정의 Comparator 를 사용하여 새로운 TreeMap 객체를 생성합니다:
Map<Integer, String> treeMap = new TreeMap<>(new DescendingOrder());
treeMap.put(1, "John");
treeMap.put(4, "Mary");
treeMap.put(2, "Peter");
- 이제 TreeMap 을 순회하면 내림차순으로 정렬됩니다:
for(Map.Entry<Integer, String> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
Map 요소 접근 방법
get()메서드를 사용하여 특정 요소에 접근합니다:
String name = map.get(1);
System.out.println("Name is " + name);
Map 요소 삭제 방법
remove()메서드를 사용하여 특정 요소를 제거합니다:
String removedName = map.remove(2);
System.out.println("Removed: " + removedName);
Map 크기 가져오기
size()메서드를 사용하여 TreeMap 의 요소 개수를 가져옵니다:
int size = map.size();
System.out.println(size);
첫 번째 및 마지막 요소 가져오기
firstKey()및lastKey()메서드를 사용하여 TreeMap 의 첫 번째 및 마지막 요소를 가져옵니다:
int firstKey = map.firstKey();
int lastKey = map.lastKey();
요소 범위 가져오기
subMap()메서드를 사용하여 요소 범위를 가져옵니다:
Map<Integer, String> rangeMap = map.subMap(1, 3);
for(Map.Entry<Integer, String> entry : rangeMap.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
프로그램 컴파일 및 실행
- 터미널을 열고
~/project디렉토리로 이동합니다. javac명령을 사용하여TreeMapDemo.java파일을 컴파일합니다:
javac TreeMapDemo.java
java명령을 사용하여 프로그램을 실행합니다:
java TreeMapDemo
요약
이 랩에서는 Java 의 TreeMap 클래스에 대해 배우고 프로그램을 효과적으로 사용하는 방법을 익혔습니다. TreeMap 을 생성하고, 요소를 추가 및 제거하며, 특정 기준에 따라 요소를 검색하는 방법을 배웠습니다. 또한 Comparator 를 사용하여 정렬 순서를 사용자 정의하는 방법도 배웠습니다. TreeMap 클래스는 키 - 값 쌍의 정렬 및 저장에 대한 많은 유연성과 제어를 제공합니다.



