Java TreeMap 자료구조

JavaBeginner
지금 연습하기

소개

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 클래스는 키 - 값 쌍의 정렬 및 저장에 대한 많은 유연성과 제어를 제공합니다.