В чем разница между LinkedHashMap, TreeHashMap и HashMap

«В чем разница между LinkedHashMap, TreeHashMap и HashMap» — вопрос из категории Алгоритмы и структуры данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

LinkedHashMap сохраняет порядок вставки элементов, TreeMap сортирует элементы по ключам (натуральный порядок или Comparator), а HashMap не гарантирует никакого порядка.

Пример:

val hashMap = HashMap<String, Int>().apply { 
    put("c", 3); put("a", 1); put("b", 2) 
} // Порядок не гарантирован  

val linkedMap = LinkedHashMap<String, Int>().apply { 
    put("c", 3); put("a", 1); put("b", 2) 
} // Порядок: c, a, b  

val treeMap = TreeMap<String, Int>().apply { 
    put("c", 3); put("a", 1); put("b", 2) 
} // Порядок: a, b, c  

Производительность:

  • HashMap: O(1) для get/put (в среднем).
  • LinkedHashMap: чуть медленнее HashMap из-за поддержки порядка.
  • TreeMap: O(log n) для операций, так как использует красно-черное дерево.