undefined

Задачи на equals & hashCode

Java Multithreading
1 уровень , 5 лекция
Открыта
Задачи на equals & hashCode - 1

— Привет, Амиго!

— Привет, Диего!

— Старый добрый Диего подготовил для тебя несколько задач:

undefined
24
Задача
Java Multithreading,  1 уровень,  5 лекция
Недоступна
Equals and HashCode
В классе Solution исправить пару методов equals/hashCode в соответствии с правилами реализации этих методов(детали уточни у своего любимого поисковика). Обе строки first и last должны принимать участие в сравнении с помощью метода equals и вычислении hashcode. Метод main не участвует в тестировании.
undefined
6
Задача
Java Multithreading,  1 уровень,  5 лекция
Недоступна
Исправить ошибку. Сравнение объектов
Сравнение объектов Solution не работает должным образом. Найти ошибку и исправить. Метод main не участвует в тестировании.
undefined
6
Задача
Java Multithreading,  1 уровень,  5 лекция
Недоступна
Ошибка в equals/hashCode
Исправьте ошибки реализаций методов equals и hashCode для класса Solution.
Комментарии (103)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
Умалат 23 уровень, Малгобек
15 апреля 2021
Многие пишут что не проходит проверку по 3-му пункту в первой задаче если написать так:

if (o == null || this.getClass() != o.getClass()) return false;
И у меня тоже не прошел и минус попытка, а надо было проверку делать раздельно по этому валидатор и ругался

if (o == null) {
       return false;
}
if (o.getClass() != this.getClass()){
       return false;
}
Пользуйтесь, тут явно проблема в валидаторе т.к. делать проверку через instanceof не рекомендовано! P.S Перепроверял!
LokiLaufeyson 41 уровень, Киев
10 апреля 2021
Неправильно проверять на instanceof, нужно на getClass() - потому что метод equals() должен попадать под определение отношения эквивалентности
18 марта 2021
Ребята!!! Вот самое классное объяснение!! Затянуто, но реально лучшее, что есть! Всем удачи!
Herr Ives 30 уровень
8 февраля 2021
советую посмотреть лекцию сергея архипова коротки и понятно
Сэм Фишер 25 уровень, Кишинев
12 января 2021
рекомендую задачи решать с конца(начать с 3). как-то после 3-ей, вторая пошла на ура)
SolomonVP 31 уровень, Томск-Москва-Краснодар
7 января 2021
В общем как-то так понял всё это. :) Раньше даже не задумывался чем они там отличаются эти икуалсы. Рекомендую разобраться до того, как научились использовать alt-ins. :) Прежде чем добавить в большую коллекцию новый объект, сначала сравниваем объект по ХешКоду, это что-то типа грубого отсеивателя. К примеру мы собираем коллекцию тыгыдыков. У нас появились новые кандидаты: рыба, собака, кот. Перед тем как поместить рыбу, кота или собаку в свою коллекцию утренних тыгыдыков - отделяем кота и собаку от рыбы через фильтр по 4 лапам. Потом уже через equals сравниваем кота и собаку в мельчайших деталях(порода, ест ли траву. тыгыдыкает ли по утрам). И если они разные, то добавляем оба, либо добавляем только того кто тыгыдыкает, остальные не подходят для нашей коллекции тыгыдыков. Не забываем переопределять. Никто не запрещает сравнивать рыбу, собаку и кота сразу через equals с подробностями. Но тогда упадет производительность.
John28dv 24 уровень, Благовещенск
29 декабря 2020

Solution solution = (Solution) o;
Грубо говоря, объект о получит поля и методы нашего класса. Это нужно для сравнения. и Ссылка для этого объекта присвоится в solution.

return Objects.equals(this.first,solution.first) && Objects.equals(solution.last,this.last);
Objects.equals (x , y) Создаётся и возвращается объект с результатом вычисления ( x и у): Objects.equals (x , y) выдаёт true или Objects.equals (x , y) выдаёт false Получается, что в этот метод мы помещаем параметры : где х = this.first, а у = solution.first
Ягодин Артем Романович 22 уровень, Москва
8 декабря 2020
Нельзя было от простых к сложным пойти в этой довольно интересной теме? бред
alex_us 41 уровень, Симферополь
30 ноября 2020
эти задачи таааак выводят из себя. ерунда какая то я тупо не могу пройти их
Will Fight 27 уровень
28 ноября 2020
Ох и не любят методы equals и hashCode значений null. У null объекта нельзя вызвать эти методы, т.е. не получится null.equals(...), не получится null.hashCode() В результате в задачках приходится проверять все значения. Для понимания в самый раз