Класс TreeMap в Java реализует интерфейс Map, используя дерево. TreeMap обеспечивает эффективное средство хранения пар ключ/значение в отсортированном порядке и позволяет быстро извлекать данные.

Следует отметить, что, в отличие от хэш-карты, карта деревьев гарантирует, что ее элементы будут отсортированы в порядке возрастания ключа.

Конструкторы

Ниже приведен список конструкторов, поддерживаемых классом TreeMap.

Конструктор и описание
1TreeMap( )
Этот конструктор создает пустое дерево, которое будет сортироваться по естественному порядку его ключей.
2TreeMap(Comparator comp)
Этот конструктор создает пустую древовидную карту, которая будет сортироваться с использованием компаратора comp.
3TreeMap(Map m)
Этот конструктор инициализирует древовидную карту с элементами из m, которые будут отсортированы с использованием естественного порядка ключей.
4TreeMap(SortedMap sm)
Этот конструктор инициализирует карту дерева с записями из SortedMap sm, которые будут отсортированы в том же порядке, что и sm.

Методы

Помимо методов, унаследованных от родительских классов, TreeMap определяет следующие методы:

Методы и описание
1void clear()
Удаляет все отображения из этой TreeMap.
2Object clone()
Возвращает мелкую копию этого экземпляра TreeMap.
3Comparator comparator()
Возвращает компаратор, используемый для порядка этого Map, или null (нуль), если этот Map использует естественный порядок своих ключей.
4boolean containsKey(Object key)
Возвращает true, если этот Map содержит отображение для указанного ключа.
5boolean containsValue(Object value)
Возвращает true, если этот Map отображает одну или несколько клавиш в указанное значение.
6Set entrySet()
Возвращает заданный вид отображений, содержащихся в этом Map.
7Object firstKey()
Возвращает первый (самый низкий) ключ на этом сортированном Map.
8Object get(Object key)
Возвращает значение, на которое этот Map отображает указанный ключ.
9SortedMap headMap(Object toKey)
Возвращает представление (вид) части этого Map, ключи которой строго меньше, чем toKey.
10Set keySet()
Возвращает Set вид ключей, содержащихся в этом Map.
11Object lastKey()
Возвращает последний (самый высокий) ключ в настоящее время на этом отсортированном Map.
12Object put(Object key, Object value)
Связывает указанное значение с указанным ключом на этом Map.
13void putAll(Map map)
Копирует все отображения с указанного Map на этот Map.
14Object remove(Object key)
Удаляет отображение этого ключа из этого TreeMap, если оно присутствует.
15int size()
Возвращает количество отображений ключ-значение на этом Map.
16SortedMap subMap(Object fromKey, Object toKey)
Возвращает представление (вид) части этого Map, ключи которого варьируется от fromKey, включительно, до toKey, исключительно.
17SortedMap tailMap(Object fromKey)
Возвращает представление (вид) части этого Map, ключи которого больше или равны fromKey.
18Collection values()
Возвращает представление (вид) коллекции значений, содержащихся на этом Map.

Пример

Следующая программа демонстрирует работу нескольких методов, поддерживаемых TreeMap в Java:

import java.util.*;
public class TreeMapDemo {

   public static void main(String args[]) {
      // Создаём хэш-карту
      TreeMap tm = new TreeMap();
      
      // Помещаем элементы в карту
      tm.put("Заря", new Double(3434.34));
      tm.put("Марк", new Double(123.22));
      tm.put("Айян", new Double(1378.00));
      tm.put("Дэйзи", new Double(99.22));
      tm.put("Михаил", new Double(-19.08));
      
      // Получаем вид элементов
      Set set = tm.entrySet();
      
      // Получаем итератор
      Iterator i = set.iterator();
      
      // Отображаем элементы
      while(i.hasNext()) {
         Map.Entry me = (Map.Entry)i.next();
         System.out.print(me.getKey() + ": ");
         System.out.println(me.getValue());
      }
      System.out.println();
      
      // Вносим 1000 на счёт Зари
      double balance = ((Double)tm.get("Заря")).doubleValue();
      tm.put("Заря", new Double(balance + 1000));
      System.out.println("Новый баланс Зари: " + tm.get("Заря"));
   }
}

Получим следующий результат:

Айян: 1378.0
Дэйзи: 99.22
Марк: 123.22
Михаил: -19.08
Заря: 3434.34

Новый баланс Зари: 4434.34

Оглавление