Junior — Middle
HashMapda turli kalitlar bir xil hash-kodga ega bo'lsa, qanday qilib to'qnashuvlar bilan kurashiladi?
sobes.tech AI
AIdan javob
Java'da HashMap'da xesh-kodlar bir xil bo'lsa, muammolarni hal qilish chaining (zanjir) yordamida amalga oshiriladi. Bu shuni anglatadiki, xesh-kodi bir xil bo'lgan barcha elementlar, bucket massivida bir xil indeksga olib keladigan, bog'langan ro'yxat yoki (Java 8 dan boshlab) daraxtda saqlanadi.
Agar zanjirdagi elementlar soni etarlicha katta bo'lsa (standartda 8 dan ortiq), bog'langan ro'yxat muvozanatli daraxtga (TreeNode) aylantiriladi, bu esa qidiruvning O(n) dan O(log n) ga yaxshilanishini ta'minlaydi.
Soddalashtirilgan qo'shish logikasining misoli:
int bucketIndex = hash(key) % table.length;
Node<K,V> head = table[bucketIndex];
// Kalit mavjudligini tekshirish
while (head != null) {
if (head.key.equals(key)) {
head.value = value; // qiymatni yangilash
return;
}
head = head.next;
}
// Agar kalit mavjud bo'lmasa, yangi tugunni qo'shish
Node<K,V> newNode = new Node<>(key, value);
newNode.next = table[bucketIndex];
table[bucketIndex] = newNode;
Shu tarzda, HashMap muammolarni samarali hal qiladi va qabul qilinadigan ishlashni saqlab qoladi.