В чем разница между HashMap и TreeMap?

Я начал изучать Java. Когда я буду использовать HashMap над TreeMap?

TreeMap является примером SortedMap , что означает, что порядок ключей можно сортировать, а при повторении по клавишам вы можете ожидать, что они будут в порядке.

HashMap с другой стороны, не дает такой гарантии. Поэтому при повторении по клавишам HashMap вы не можете быть уверены, в каком порядке они будут находиться.

HashMap будет более эффективным в целом, поэтому используйте его, когда вам не нужен порядок ключей.

HashMap реализуется таблицей Hash, а TreeMapRed-Black tree . Основное различие между HashMap и TreeMap фактически отражает основное различие между Hash и Binary Tree , то есть при итерации, гарантией TreeMap может быть порядок ключей, который определяется методом сравнения compareTo () элемента или компаратором, установленным в конструкторе TreeMap ,

Взгляните на следующую диаграмму .

введите описание изображения здесь

Подводить итоги:

  • HashMap: структура Lookup-array, основанная на hashCode (), реализациях equals (), O (1) сложность выполнения для вставки и поиска, unsorted
  • TreeMap: структура дерева, основанная на реализации compareTo (), O (log (N)) сложность выполнения для вставки и поиска, сортировка

Взято из: HashMap против TreeMap

Используйте HashMap большую часть времени, но используйте TreeMap когда вам нужен ключ для сортировки (когда вам нужно итерировать ключи).

Я расскажу о реализации HashMap и TreeMap в Java:

  • HashMap – реализовать базовый интерфейс карты

    1. реализуемый массивом ведер, каждый ведро представляет собой LinkedList записей
    2. время выполнения основных операций: put (), среднее значение O (1), наихудший случай O (n), происходит при изменении размера таблицы; get (), remove (), средний O (1)
    3. не синхронизированы, чтобы синхронизировать его: Map m = Collections.synchronizedMap(new HashMap(...));
    4. Порядок итераций карты непредсказуем.
  • TreeMap – реализовать навигационный интерфейс карты

    1. выполненное красно-черным деревом
    2. время выполнения основных операций: put (), get (), remove (), худший случай O (lgn)
    3. не синхронизирован, чтобы синхронизировать его: SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
    4. предоставить упорядоченную итерацию. upperKey (), lowerKey () может использоваться для получения преемника и предшественника данного ключа.

Суммируя, наибольшая разница между HashMap и TreeMap заключается в том, что TreeMap реализует NavigableMap , которые обеспечивают функцию упорядоченной итерации. Кроме того, HashMap и TreeMap являются членами среды Java Collection. Вы можете исследовать исходный код Java, чтобы узнать больше об их реализации.

Вы почти всегда используете HashMap , вы должны использовать TreeMap только в том случае, если вам нужны ваши ключи в определенном порядке.

HashMap используется для быстрого поиска, тогда как TreeMap используется для сортировки итераций по карте.

Наряду с сортированным хранилищем ключей различие с TreeMap, разработчик может предоставить (String.CASE_INSENSITIVE_ORDER) со строковыми ключами, поэтому компаратор игнорирует случай ключа при выполнении сравнения ключей на доступ к карте. Это невозможно сделать с помощью HashMap – это всегда чувствительные к регистру сравнения в HashMap.

  • Ошибка раздувания classа com.google.ads.AdView
  • Изменение языка ввода клавиатуры Programmatically
  • Использование неинициализированного конечного поля - с / без "этого". спецификатор
  • Запуск команд оболочки, хотя java-код на Android?
  • Ресурс Android - массив массивов
  • Android / Java - Опубликовать простой текст на стене Facebook?
  • Добавление элемента подменю ListView в Android
  • Отправка строки через Bluetooth с ПК в качестве клиента на мобильный как сервер
  • NetworkSecurityConfig: нет настроек сетевой безопасности - ошибка Android 7.0?
  • Вычисление угла между линией, определяемой двумя точками
  • Для Android требуется уровень соответствия компилятора 5.0 или 6.0. Вместо этого найдено «1.7». Используйте Android Tools> Fix Project Properties
  • Давайте будем гением компьютера.