Middle
Чаро hashCode()-и объектҳои гуногун метавонанд арзишҳои якхела баргардонанд?
sobes.tech AI
Ҷавоб аз AI
Зеро диапазони мумкин бўлган хеш-код (int) қадар кичик, объектлар мазмунининг мумкин бўлган қийматлар диапазонидан. Ҳақиқатан ҳам, ҳар қандай хеш-функциянинг ушбу хусусияти — кириш маълумотларини белгиланган ёки кичикроқ қийматлар диапазонига қисқартириш. Хеш-кодлар (турли объектлар бир хил хеш-кодга эга бўлганда) қачонлардан-ка, олдини олиш мумкин эмас.
Хешга асосланган тўпламлар (масалан, HashMap, HashSet) тўғри ишлаши учун қуйидаги қоидалар бажарилиши керак:
- Агар Objects.equals(a, b), унда a.hashCode() == b.hashCode().
- Агар !Objects.equals(a, b), унда a.hashCode() борасида бир хил ёки турлича бўлиши мумкин.
Тўпламлар hashCode()-дан фойдаланиб, элементни жойлаштириш ёки излаш учун потенциал "бошқа"ни тез аниқлайди, ва кейин equals()-дан фойдаланиб, аниқ текширув ўтказади.