Почему и когда использовать TreeMap
Может ли кто-нибудь сказать мне, когда и почему использовать TREEMAP. Я прошел через Эта ссылка
но не нашел ответа.
Как по моему мнению, мы используем treemap для получения сортировки данных в соответствии с вашим ключом, и мы также можем достичь другими способами.
Ответы
Ответ 1
Предположим, вы хотите реализовать словарь и распечатать его в алфавитном порядке, вы можете использовать комбинацию TreeMap и TreeSet:
public static void main(String args[]) {
Map<String, Set<String>> dictionary = new TreeMap<>();
Set<String> a = new TreeSet<>(Arrays.asList("Actual", "Arrival", "Actuary"));
Set<String> b = new TreeSet<>(Arrays.asList("Bump", "Bravo", "Basic"));
dictionary.put("B", b);
dictionary.put("A", a);
System.out.println(dictionary);
}
Вся сортировка выполняется автоматически и печатает:
{A = [Actual, Actuary, Arrival], B = [Basic, Bravo, Bump]}
Конечно, вы могли бы отсортировать структуры вручную, но использование TreeMap/Set может быть более эффективным, уменьшает количество строк кода (= количество ошибок) и более читаемо.
Ответ 2
В javadoc, на который вы ссылаетесь, четко указано, что это реализация navigable и sorted интерфейсы карты. Вы будете использовать его, когда вам нужна эта функциональность.
Ответ 3
Это эффективный способ сортировки объектов по некоторому ключу. Если для вас важен также случайный доступ, то TreeMap является ответом. С этой структурой данных вы можете выполнять итерацию по порядку.
Если произвольный доступ не нужен, лучше использовать отсортированный набор/пакет или список.
Почему в Java нет SortedList?
Ответ 4
TreeMap
Реализация NavigableMap на основе Red-Black. Карта сортируется в соответствии с естественным порядком ее ключей или компаратором, предусмотренным на момент создания карты, в зависимости от того, какой конструктор используется.
Эта реализация обеспечивает гарантированную log (n) временную стоимость для операций containsKey, get, put и remove. Алгоритмы - это адаптация тех, что используются в Cormen, Leiserson и Rivest. Введение в алгоритмы.
Используйте эту структуру данных, когда вам нужен упорядоченный ключ не только по возрастанию, вы можете передать comparator
в конструктор TreeMap(Comparator<? super K> comparator)
, чтобы написать свою собственную логику сортировки. Кроме того, это тип самобалансирующегося двоичного дерева поиска.