Java Interview Tasks
4.19K subscribers
199 photos
1 file
124 links
Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.

Автор канала - @alexzelentsov

По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks
Download Telegram
🔍 Ответ на задачу про MegaClass 📊

Давайте разберём, что именно будет напечатано при выполнении данного кода. Здесь мы имеем класс MegaClass с переопределёнными методами equals() и hashCode(), и работаем с объектами этого класса в HashSet. Обратите внимание на влияние изменения состояния объекта на результат работы методов, связанных с коллекциями.

Пояснения:

A: set.add(o) - Возвращает true, потому что объект o только что добавлен в set.

B: set.contains(new MegaClass(10)) - Возвращает false, так как после изменения поля i, o имеет hashCode = 1000, который не совпадает с 1000 у new MegaClass(10).

C: set.add(new MegaClass(10)) - Возвращает true, объект с hashCode равным 10 не найден в set, потому что изменили o.

D: set.contains(new MegaClass(1000)) - Возвращает false, так как теперь oбъект, у которого hashcode 1000, содержится в set, но предыдущий объект был добавлен с хешкодом 10 и поэтому он не найдется теперь.

E: new MegaClass(10).equals(new MegaClass(1000)) - Возвращает false, так как поля i отличаются.

📈 Этот пример отлично демонстрирует, насколько важно соблюдать неизменяемость полей, участвующих в вычислении hashCode() и equals(), при работе с коллекциями.

Если вам понравился анализ этого кода и вы хотите узнавать больше, ставьте лайк, подписывайтесь на канал и делитесь своими мыслями в комментариях! 👍💬

#java #hashcode #equals #collections #java_interview_tasks
🔥8👍53