Sobes.tech
Middle

Agar equals va hashCode metodlari qayta yozilmagan bo'lsa, HasMap.get() metodi nima qaytaradi?

sobes.tech AI

AIdan javob

null қайтарилади, агар қидирув учун ишлатилган калит, қўшилган объект билан бир хил объект (шаклда бир хил манзилга эга) бўлмаса.

Бунга сабаб, HashMap hashCode() ва equals() комбинациясини қўллайди, улар калитларнинг "ҳақиқийлигини" аниқлаш учун. Агар бу методлар қайтадан ёзилмаса, улар Objectдан олинади.

  1. Object.hashCode() одатда объектнинг ёдгорлик манзилига асосланган қийматни қайтариб, ҳар бир экземпляр учун уникалдир.
  2. Object.equals() фақат манзил бўйича тенгликни текширади (this == obj).

Шунинг учун, HashMap.get() қайта ишланмаган equals ва hashCode() билан объектни топиши учун, иккала шарт ҳам бажарилиши керак:

  • Object.hashCode() кодлари бир хил бўлиши керак, бу жуда кам эҳтимол турли объектлар учун.
  • Объектлар манзил бўйича тенг бўлиши керак (Object.equals()), яъни бир хил экземпляр бўлиши керак.

Агар сиз объектни HashMapга қўйсангиз ва кейин унинг ўрнига, фақатги уларнинг майдон қийматлари бир хил бўлган (лекин бир хил экземпляр эмас) бошқа объектдан фойдалансангиз, hashCode ва equals стандарт ҳолда уларни турлича деб ҳисоблайди ва get() null қайтариб қўяди.