нет гарантированного порядка, будет оставаться постоянным с течением времени
сортировка в соответствии с естественным порядком
порядок вставки
Получить / поместить / удалить / containsKey
O(1)
O(журнал (n))
O(1)
Интерфейсы
Карта
Навигационная карта, Map, SortedMap
Карта
Нулевые значения / ключи
разрешенный
только значения
разрешенный
Отказоустойчивое поведение
Отказоустойчивое поведение итератора не может быть гарантировано, невозможно дать какие-либо твердые гарантии при наличии несинхронизированной параллельной модификации
Отказоустойчивое поведение итератора не может быть гарантировано, невозможно дать какие-либо твердые гарантии при наличии несинхронизированной параллельной модификации
Отказоустойчивое поведение итератора не может быть гарантировано, невозможно дать какие-либо твердые гарантии при наличии несинхронизированной параллельной модификации
Реализация
сегменты
Красно-черное дерево
двухсвязные сегменты
Синхронизирован
реализация не синхронизирована
реализация не синхронизирована
реализация не синхронизирована
Ответ 2
Все три класса реализуют Map интерфейс и предлагают в основном одинаковую функциональность. Наиболее важным отличием является порядок, в котором будут выполняться итерации по записям:
HashMap не дает абсолютно никаких гарантий относительно порядка итераций. Он может (и будет) даже полностью меняться при добавлении новых элементов.
TreeMap будет выполняться итерация в соответствии с "естественным порядком" ключей в соответствии с их compareTo() методом (или предоставленным извне Comparator). Кроме того, он реализует SortedMap интерфейс, который содержит методы, зависящие от этого порядка сортировки.
LinkedHashMap будет выполняться итерация в том порядке, в котором записи были помещены на карту
"Хэш-таблица" - это общее название карт на основе хэша. В контексте Java API, Hashtable является устаревшим классом со времен Java 1.1, до того, как существовала платформа collections framework. Его больше не следует использовать, потому что его API загроможден устаревшими методами, которые дублируют функциональность, а его методы синхронизированы (что может снизить производительность и, как правило, бесполезно). Используйте ConcurrentHashMap вместо Hashtable.
Ответ 3
Все три представляют сопоставление уникальных ключей со значениями и, следовательно, реализуют интерфейс Map.
LinkedHashMap очень похож на HashMap, но он повышает осведомленность о порядке добавления элементов (или доступа к ним), поэтому порядок итераций такой же, как порядок вставки (или порядок доступа, в зависимости от параметров построения).
TreeMap - это отображение на основе дерева. Операции ввода / получения в нем занимают O (log n) времени. Для элементов требуется некоторый механизм сравнения, либо с Comparable, либо с Comparator. Порядок итераций определяется этим механизмом.
Ответ 4
Посмотрите, где находится каждый класс в иерархии классов на следующей диаграмме (более крупной). TreeMap реализует SortedMap, а NavigableMap while HashMap - нет.
HashTable устарел, и следует использовать соответствующий ConcurrentHashMap класс.