Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

воскресенье, 7 августа 2011 г.

HashMap, LinkedHashMap и TreeMap в Java

Вкратце, чем различаются между собой HashMap, LinkedHashMap и TreeMap из пакета java.util?

Все три класса имплементируют интерфейс java.util.Map. Но в каждой реализации есть всякие "плюшечки":


  • HashMap - не дает никаких гарантий по поводу порядка итерации по элементам. Скорость доступа: O(1).

  • LinkedHashMap - итерация по элементам в том же порядке, в котором они были вставлены в коллекцию, т.е. в insertion order. Скорость доступа: O(1).

  • TreeMap - держит коллекцию отсортированной по ключам (используется либо метод compareTo() либо предоставленный компаратор), поэтому итерация по элементам будет в порядке сортировки по ключам - natural ordering. Скорость доступа: O(log(n)).

3 комментария:

  1. >>TreeMap - держит коллекцию отсортированной по ключам (используется либо метод compareTo() либо предоставленный компаратор), поэтому итерация по элементам будет в порядке сортировки по ключам - natural ordering<<

    несколько размыто написано, Tree - означает что информация хранится в поисковом дереве (говорить что она “держится отсортированной” как-то неправильно, как будто подразумевается её хранение в списке а не в дереве). Одна из особенностей подобного хранения заключается в простоте алгоритма (рекурсивный по духу) который способен вывести сохранённые элементы в порядке не убывания.
    Короче не стесняйтесь написать чуточку больше и точнее, blogspot это ж не твиттер :)

    ОтветитьУдалить
  2. прежде всего каждая реализация имеет свою сложность поиска элементов - HashMap/LinkedHashMap - O(1), тогда как TreeMap - O(log(N))

    ОтветитьУдалить

Постоянные читатели