Почему и когда использовать 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), чтобы написать свою собственную логику сортировки. Кроме того, это тип самобалансирующегося двоичного дерева поиска.