SortedMap NavigableMap TreeMap
Лекция: Основные структуры данных в Java
Введение
В Java существует множество структур данных, которые помогают эффективно организовывать и управлять данными. В этой лекции мы сосредоточимся на интерфейсах SortedMap
, NavigableMap
и классе TreeMap
, которые являются важными инструментами для работы с отсортированными ассоциативными массивами.
1. SortedMap
Определение:
SortedMap
— это интерфейс, который расширяет интерфейс Map
и представляет собой отображение, в котором ключи отсортированы в естественном порядке или по заданному компаратору.
Основные методы:
- Comparator<? super K> comparator()
: Возвращает компаратор, используемый для сортировки ключей, или null
, если ключи отсортированы в естественном порядке.
- SortedMap<K, V> subMap(K fromKey, K toKey)
: Возвращает представление части карты, содержащей ключи от fromKey
(включительно) до toKey
(исключительно).
- SortedMap<K, V> headMap(K toKey)
: Возвращает представление части карты, содержащей ключи, меньшие toKey
.
- SortedMap<K, V> tailMap(K fromKey)
: Возвращает представление части карты, содержащей ключи, большие или равные fromKey
.
- K firstKey()
: Возвращает первый (наименьший) ключ в карте.
- K lastKey()
: Возвращает последний (наибольший) ключ в карте.
2. NavigableMap
Определение:
NavigableMap
— это расширение интерфейса SortedMap
, которое добавляет методы для навигации по карте. Он позволяет находить ближайшие ключи, а также предоставляет методы для работы с диапазонами.
Основные методы:
- K lower(K key)
: Возвращает наибольший ключ, меньший, чем указанный ключ, или null
, если такого ключа нет.
- K floor(K key)
: Возвращает наибольший ключ, меньший или равный указанному ключу, или null
, если такого ключа нет.
- K ceiling(K key)
: Возвращает наименьший ключ, больший или равный указанному ключу, или null
, если такого ключа нет.
- K higher(K key)
: Возвращает наименьший ключ, больший, чем указанный ключ, или null
, если такого ключа нет.
- NavigableSet<K> navigableKeySet()
: Возвращает набор ключей, отсортированных в порядке навигации.
3. TreeMap
Определение:
TreeMap
— это реализация интерфейсов NavigableMap
и SortedMap
, которая использует красно-черное дерево для хранения ключей. Это обеспечивает логарифмическое время выполнения операций поиска, вставки и удаления.
Основные характеристики:
- Ключи в TreeMap
отсортированы в естественном порядке или по заданному компаратору.
- TreeMap
не допускает null
ключей, но допускает null
значения.
- TreeMap
является не синхронизированной структурой данных, поэтому для многопоточных приложений может потребоваться внешняя синхронизация.
Пример использования:
import java.util.TreeMap;
public class Example {
public static void main(String[] args) {
TreeMap<String, Integer> map = new TreeMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Cherry", 3);
System.out.println("Первый ключ: " + map.firstKey());
System.out.println("Последний ключ: " + map.lastKey());
System.out.println("Подмножество от 'Apple' до 'Cherry': " + map.subMap("Apple", "Cherry"));
}
}
Заключение
SortedMap
, NavigableMap
и TreeMap
являются мощными инструментами для работы с отсортированными данными в Java. Понимание их особенностей и методов позволяет эффективно управлять данными и оптимизировать производительность приложений. Важно выбирать правильную структуру данных в зависимости от требований вашего приложения и характера операций, которые вы планируете выполнять.
Если у вас есть вопросы или вы хотите углубиться в какую-либо из тем, не стесняйтесь задавать их!
пример
[[Programming/java/1. osnovi/Тема 6. Основные структуры данных/Урок 8. SortedMap _ NavigableMap _ TreeMap/задание|задание]]