Sobes.tech
Middle

Əgər equals və hashCode metodları yenidən təyin edilməyibsə, HasMap.get() metodu nə qaytaracaq?

sobes.tech Süni İntellekt

AI-dan cavab

null geri qaytariladi, agar qidirish uchun ishlatiladigan kalit, qo'shilgan ob'ekt bilan aynan bir xil ob'ekt (shu bilan birga, aynan bir referensga ega) bo'lmasa.

Buning sababi shundaki, HashMap kalitlarning "tengligini" aniqlash uchun hashCode() va equals() kombinatsiyasidan foydalanadi. Agar bu metodlar override qilinmagan bo'lsa, ular Objectdan olinadi.

  1. Object.hashCode() odatda ob'ektning xotira manziliga asoslangan qiymatni qaytaradi, ya'ni har bir nusxa uchun noyob.
  2. Object.equals() faqat referens tengligini tekshiradi (this == obj).

Shuning uchun, HashMap.get() override qilinmagan equals va hashCode() bilan elementni topishi uchun, ikkala shart ham bajarilishi kerak:

  • Hash kodlari (Object.hashCode()) teng bo'lishi kerak, bu juda kam ehtimol turli ob'ektlar uchun.
  • Ob'ektlar referens bo'yicha teng bo'lishi kerak (Object.equals()), ya'ni, bir xil nusxa bo'lishi kerak.

Agar siz ob'ektni HashMapga joylashtirsangiz va keyin uni boshqa ob'ekt yordamida, faqatgina maydon qiymatlari bilan (lekin bir xil nusxa emas), qidirsangiz, hashCode va equals odatiy holatda ularni turlicha deb hisoblaydi va get() null qaytaradi.