Датаструктура Java TreeMap

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Класс TreeMap в Java является частью интерфейса Java Collection и реализует интерфейс Map. Он хранит пары ключ-значение в отсортированном порядке, в отличие от других реализаций Map. В этом практическом занятии вы научитесь эффективно использовать класс TreeMap в своих Java-программах.

Создание TreeMap

  • Откройте текстовый редактор и создайте новый файл с именем TreeMapDemo.java в каталоге ~/project.
  • Импортируйте необходимые пакеты:
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:
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, он будет отсортирован по идентификатору сотрудника:
for(Map.Entry<Employee, String> entry : employeeMap.entrySet()) {
    System.out.println(entry.getKey().getId() + " "
                       + entry.getKey().getName() + " "
                       + entry.getValue());
}

Использование компараторов для сортировки

  • Определите пользовательский компаратор в классе TreeMapDemo:
class DescendingOrder implements Comparator<Integer> {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }
}
  • Создайте новый объект 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.
  • Скомпилируйте файл TreeMapDemo.java с помощью команды javac:
javac TreeMapDemo.java
  • Запустите программу с помощью команды java:
java TreeMapDemo

Резюме

В этом практическом занятии вы узнали о классе TreeMap в Java и о том, как эффективно использовать его в своих программах. Вы узнали, как создавать TreeMap, добавлять и удалять элементы, а также получать элементы на основе конкретных критериев. Также вы узнали, как настраивать порядок сортировки с использованием Comparator. Класс TreeMap обеспечивает большую гибкость и контроль при сортировке и хранении пар ключ-значение.