Sobes.tech
Junior — Middle

HashMap-ə eyni hash koduna malik, lakin equals-ə görə fərqli dəyərlərə sahib iki açar əlavə etsəniz, nə baş verər?

sobes.tech Süni İntellekt

AI-dan cavab

Java-da HashMap-də açarlar hash koduna görə indekslənmiş bucketlərdə saxlanılır. Əgər iki açar eyni hash koduna malikdirsə, onlar eyni bucketa düşür, lakin unikalılığı müəyyən etmək üçün equals metodu istifadə olunur.

Əgər eyni hash koduna malik, lakin equals ilə bərabər olmayan iki açar əlavə etsəniz, HashMap hər iki açarı eyni bucketa müxtəlif qeydlər kimi saxlayacaq.

Misal:

Map<Key, String> map = new HashMap<>();
Key key1 = new Key(1); // hashCode = 42
Key key2 = new Key(2); // hashCode = 42, amma !key1.equals(key2)

map.put(key1, "value1");
map.put(key2, "value2");

System.out.println(map.size()); // 2

Beləliklə, eyni hash kodu eyni açarlar demək deyil. HashMap əvvəlcə hash-ə görə bucket axtarır, sonra isə equals ilə açarları müqayisə edir. Əgər equals false qaytarırsa, açar yeni hesab olunur və kolleksiyaya əlavə olunur.