Подробное объяснение Java Hashmap, TreeMap и LinkedHashmap
Во время интервью сегодня утром я спросил о Java и связанных с картами вещах. Я вспомнил контент, связанный с HashMap и TreeMap. Когда я вернулся, я быстро попробовал несколько демонстраций, чтобы понять.
карта упаковки; Импорт java.util.*; открытый класс Hashmaps {public static void main (string [] args) {map map = new hashmap (); map.put ("a", "aaa"); map.put ("b", "bbb"); map.put ("c", "ccc"); map.put ("D", "ddd"); Итератор iterator = map.keyset (). Iterator (); while (iterator.hasnext ()) {object key = iterator.next (); System.out.println ("map.get (key) is:" + map.get (key)); } Hashtable tab = new hashtable (); tab.put ("a", "aaa"); tab.put ("b", "bbb"); tab.put ("c", "ccc"); tab.put ("d", "ddd"); Iterator iterator_1 = tab.keyset (). Iterator (); while (iterator_1.hasnext ()) {object key = iterator_1.next (); System.out.println ("tab.get (key) is:" + tab.get (key)); } TreeMap tmp = new TreeMap (); tmp.put ("a", "aaa"); tmp.put ("b", "bbb"); tmp.put ("c", "ccc"); tmp.put ("D", "DDD"); tmp.put ("a", "aba"); Iterator iterator_2 = tmp.keyset (). Iterator (); while (iterator_2.hasnext ()) {object key = iterator_2.next (); System.out.println ("tmp.get (key) is:" + tmp.get (key)); } LinkedHashmap <string, integer> linkedHashmap = new LinkedHashmap <string, integer> (); LinkedHashmap.put ("dasdsa", 1); LinkedHashmap.put ("gdsf", 2); LinkedHashmap.put ("texvdfd", 3); LinkedHashmap.put ("bdada", 4); LinkedHashmap.put ("gdsf", 3); для (String Temp: LinkedHashmap.keySet ()) {System.out.println (temp); }}} Карта отличается от списка. Базовый уровень использует форму пар клавишных значений для хранения данных. Map.Entry-это внутренний суб-вход. Различные реализации карты имеют разные индексные схемы для пар клавишных значений.
Сам HashMap использует функцию хеш для индекса значений ключей. Мы не можем определить порядок последних значений ключей.
Тем не менее, существует интересное явление, которое при использовании целого числа в качестве пары ключевых значений, когда цифры составляют 1 цифру, значение ключа расположено от малого до крупного, а когда цифры поднимаются до двух цифр, могут возникнуть проблемы.
Внутри травма есть сбалансированное дерево для хранения индексов ключевой стоимости. TreeMap сортирует значения ключей в соответствии с функцией сравнения. Я предполагаю, что внутри может быть avltree.
LinkedHashmap имеет функцию, которую пары клавиш значения отсортированы в порядке вставки. Если есть повторные вставки, они записываются в порядке первой вставки. Одним из высказываний в Интернете является то, что внутри структуры есть два хэша.
Один решает проблему заказа, другой решает проблему хранения, правильность должна быть подтверждена
Hashmap и Treemap - это две наиболее часто используемые структуры карт. Вообще говоря, HashMap относительно эффективен и наиболее распространен. Только если нам нужно быть заказано со значениями ключей, мы будем использовать TreeMap.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!