Middle
Эгерде equals жана hashCode методдору кайра жазылбаса, HasMap.get() методу эмне болот?
sobes.tech AI
AIден жооп
null кайтарылат, эгер издөөнүн үчүн колдонулган ачкыч, кошулган элемент менен бирдей объект (ошол эле шилтемеге ээ) эмес болсо.
Мунун себеби, HashMap ачкычтардын "бирдейлигин" аныктоо үчүн hashCode() жана equals() методдорун колдонушат. Эгер бул методдор кайра жазылбаса, алар Object классынан алынган реализацияларды колдонушат.
Object.hashCode()адатта объекттин эс тутум дарегине негизделген маанини кайтарат, ар бир экземпляр үчүн уникалдуу.Object.equals()жөн гана шилтемелердин бирдейлигин текшерет (this == obj).
Ошондуктан, HashMap.get() өзгөртүлбөгөн equals жана hashCode() менен элементти табышы үчүн, эки шартты аткаруу керек:
- Хэш-коддор (
Object.hashCode()) бирдей болушу керек, бул жакшы эле мүмкүн эмес ар кандай объекттер үчүн. - Объекттер шилтемелер боюнча бирдей болушу керек (
Object.equals()), башкача айтканда, бир эле экземпляр болушу керек.
Эгер сиз объектти HashMapка жайгаштырсаңыз жана кийинчерээк аны ошол эле маанилер менен, бирок башка экземпляр менен алууга аракет кылсаңыз, hashCode жана equals стандарттык түрдө аларды башка деп эсептейт жана get() null кайтарат.