Проверял,работает как надо(не утверждаю).Так в чем же проблема?
package com.javarush.task.task21.task2104;
import java.util.HashSet;
import java.util.Set;
/*
Equals and HashCode
*/
public class Solution {
private final String first, last;
public Solution(String first, String last) {
this.first = first;
this.last = last;
}
public boolean equals(Solution n) {
if(this==n){
return true;
}
if(! (n instanceof Solution))
if(n==null||n.getClass()!=this.getClass()){
return false;
}
Solution sol= (Solution)n;
boolean first= (this.first==null&&sol.first==null)||((this.first!=null&&sol.first!=null)&&(this.first.equals(sol.first)));
boolean second= (this.last==null&&sol.last==null)||((this.last!=null&&sol.last!=null)&&(this.last.equals(sol.last)));
return first&&second;
}
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"));
System.out.println(s.contains(new Solution("Donald", "Duck")));
}
}