Sobes.tech
Junior — Middle

Como é que a organização dos elementos com o mesmo valor de hash é implementada dentro do HashMap?

sobes.tech IA

Resposta da IA

Em Java, os elementos com o mesmo valor de hash (colisões) no HashMap são organizados na forma de uma lista ligada ou, a partir do Java 8, na forma de uma árvore balanceada (TreeNode) quando há muitas colisões.

Quando várias chaves têm o mesmo código de hash, elas são colocadas numa "cesta" (bucket). Inicialmente, todos os elementos na cesta estão ligados por uma lista ligada simples. Se o número de elementos numa cesta exceder um limite determinado (geralmente 8), a lista é transformada numa árvore vermelho-preto para melhorar a eficiência da busca.

Exemplo de estrutura simplificada:

static class Node<K,V> implements Map.Entry<K,V> {
    final int hash;
    final K key;
    V value;
    Node<K,V> next;
    // ...
}

Assim, em caso de colisões, o HashMap primeiro procura o elemento na lista ou na árvore pela chave, comparando as chaves através de equals().