"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > HashMap, LinkedHashMap ou TreeMap: qual mapa Java devo usar?

HashMap, LinkedHashMap ou TreeMap: qual mapa Java devo usar?

Publicado em 2024-12-21
Navegar:120

HashMap, LinkedHashMap, or TreeMap: Which Java Map Should I Use?

Compreendendo as diferenças entre HashMap, LinkedHashMap e TreeMap em Java

HashMap, LinkedHashMap e TreeMap são todas implementações da interface Map em Java, mas diferem em comportamento e casos de uso. Vamos explorar suas principais diferenças.

1. Ordem de iteração

  • HashMap: Nenhuma ordem de iteração garantida; chaves e valores podem ser retornados em qualquer ordem.
  • TreeMap: Chaves e valores são classificados em ordem crescente por sua ordem natural ou pelo Comparador fornecido.
  • LinkedHashMap: Chaves e valores são retornados na ordem em que foram inseridos.

2. Desempenho

  • Obter/Colocar/Remover/ContémChave:

    • HashMap: O(1)
    • TreeMap: O(log(n))
    • LinkedHashMap: O(1)

3. Interfaces

  • HashMap: Implementa apenas a interface Map.
  • TreeMap: Implementa as interfaces NavigableMap, Map e SortedMap .
  • LinkedHashMap: Implementa apenas o mapa interface.

4. Valores/chaves nulos

  • HashMap: Permite chaves e valores nulos.
  • TreeMap: Permite apenas valores nulos.
  • LinkedHashMap: Permite chaves nulas e valores.

5. Comportamento Fail-Fast

  • HashMap: O comportamento Fail-Fast não é garantido para um iterador na presença de modificação simultânea.
  • TreeMap: Igual ao HashMap.
  • LinkedHashMap: Igual ao HashMap.

6. Implementação

  • HashMap: usa buckets para armazenar pares de valores-chave.
  • TreeMap: usa uma árvore vermelha-preta para manter chaves classificadas.
  • LinkedHashMap: Usa buckets com link duplo para preservar pedido de inserção.

7. Sincronização

  • HashMap: A implementação não está sincronizada.
  • TreeMap: A implementação não está sincronizada.
  • LinkedHashMap: A implementação não é sincronizado.

8. Hashtables

Hashtables são uma implementação legada da interface Map que é fortemente sincronizada, mas menos eficiente que o HashMap. Geralmente é recomendado usar HashMap em vez de Hashtables para a maioria dos casos de uso.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3