1. Почему в методе equals проверку first на null нельзя записать так:
if (first == null || s.first == null) return false;
2. Почему в методе hashCode нельзя было оставить так:
return 31 * first.hashCode() + last.hashCode());
Спасибо.
/**
В классе Solution исправить пару методов equals/hashCode в соответствии с правилами реализации этих
методов(детали уточни у своего любимого поисковика).
Обе строки first и last должны принимать участие в сравнении с помощью метода equals и вычислении hashcode.
Метод main не участвует в тестировании.
Требования:
1. Хешкоды одинаковых объектов должны быть равны.
2. Метод equals должен проверять равен ли переданный объект текущему(сравнение через ==).
3. Метод equals должен проверять является ли переданный объект объектом класса Solution.
4. Метод equals должен возвращать true в случае, если поля first и last равны у переданного объекта
и текущего(не забудь что они могут быть равны null).
5. Должно быть обеспечено корректное поведение HashSet с типом элементов Solution.
*/
public class Solution {
private final String first, last;
public Solution(String first, String last) {
this.first = first;
this.last = last;
}
public boolean equals(Object o) {
if (this == o)
return true;
if (!(o instanceof Solution))
return false;
Solution s = (Solution) o;
if (first != null ? !first.equals(s.first) : s.first != null) return false;
return last != null ? last.equals(s.last) : s.last == null;
}
public int hashCode() {
int result = first != null ? first.hashCode() : 0;
result = 31 * result + (last != null ? last.hashCode() : 0);
return result;
// return 31 * first.hashCode() + last.hashCode();
}