Junior — Middle
როგორ არის განხორციელებული ელემენტების ორგანიზება ერთნაირი ჰეშ-კოდის მნიშვნელობით HashMap-ის შიგნით?
sobes.tech AI
პასუხი AI-სგან
Java-da, eyni hash dəyərinə (toqquşmalar) malik elementlər, HashMap daxilində əlaqəli siyahı və ya, Java 8-dən sonra, ç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 bir sadə əlaqəli siyahı ilə əlaqələndirilir. Əgər bir kovanın içindəki elementlərin sayı müəyyən bir həddi (adətən 8) aşarsa, siyahı qırmızı-qaranlıq ağaca çevrilir, axtarışın effektivliyini artırmaq üçün.
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şma hallarında, HashMap əvvəlcə siyahı və ya ağacda elementi axtarır, açar vasitəsilə, və açarları equals() ilə müqayisə edir.