Проверку вроде бы проходит. Никак не могу въехать в эту тему. Помогите, пожалуйста!
public class Solution {
private final String first, last;
public Solution(String first, String last) {
this.first = first;
this.last = last;
}
@Override
public boolean equals(Object n) {
if (n == this) {
return true;
}
if (!(n instanceof Solution)) {
return false;
}
Solution sol = (Solution) n;
boolean naNull = (first == null && sol.first == null && last.equals(sol.last)) || (first.equals(sol.first) && last == null && sol.last == null);
boolean neNull = first != null && first.equals(sol.first) && last != null && last.equals(sol.last);
return naNull || neNull;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((first == null) ? 0 : first.hashCode()) +
((last == null) ? 0 : last.hashCode());
return result;
}
public static void main(String[] args) {
Set<Solution> s = new HashSet<>();
s.add(new Solution("Donald", "Duck"));
s.add(new Solution("Donald", "Duck"));
System.out.println(s.contains(new Solution("Donald", "Duck")));
s.add(new Solution(null, "Duck"));
System.out.println(s.contains(new Solution(null, "Duck")));
s.add(new Solution("Donald", null));
System.out.println(s.contains(new Solution("Donald", null)));
System.out.println(s.size());
}
}