Sobes.tech
Junior — Middle

HashMap daxilində eyni hash dəyərinə malik elementlərin təşkili necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da, HashMap-də eyni hash dəyərinə (toqquşmalar) malik elementlər əlaqəli siyahı və ya Java 8-dən etibarən çox sayda toqquşma olduqda balanslaşdırılmış ağac (TreeNode) şəklində təşkil edilir.

Bir neçə açar eyni hash koduna malikdirsə, onlar bir "kova"ya (bucket) yerləşdirilir. Əvvəlcə, bütün elementlər kovadakı sadə əlaqəli siyahı ilə əlaqələndirilir. Əgər bir kovadakı elementlərin sayı müəyyən bir həddi (adətən 8) aşarsa, siyahı axtarışın effektivliyini artırmaq üçün qırmızı-qaranlıq ağaca çevrilir.

Sadələşdirilmiş struktur nümunəsi:

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

Beləliklə, toqquşmalar zamanı, HashMap əvvəlcə açar vasitəsilə siyahı və ya ağacda elementi axtarır, açarları equals() ilə müqayisə edir.