A sample equals method implementation :
package view;
import java.util.HashMap;
import java.util.Map;
public class PhoneNumber {
private final short areaCode;
private final short prefix;
private final short lineNumber;
public PhoneNumber(int areaCode, int prefix, int lineNumber) {
this.areaCode = (short)areaCode;
this.prefix = (short)prefix;
this.lineNumber = (short)lineNumber;
}
@Override
public boolean equals(Object obj) {
if (obj == this)
return true;
if (!(obj instanceof PhoneNumber)) {
return false;
}
PhoneNumber pn = (PhoneNumber)obj;
return pn.lineNumber == lineNumber && pn.prefix == prefix &&
pn.areaCode == areaCode;
}
public static void main(String arg[]) {
Map<PhoneNumber,String> m = new HashMap<PhoneNumber,String>();
m.put(new PhoneNumber(77,44,55), "John");
System.out.println(m.get(new PhoneNumber(77,44,55)));
}
}
The console output will be null as the class is not overridden the hashcode.
@Override
public int hashCode() {
int result = 17;
result = 31 * result + areaCode;
result = 31 * result + prefix;
result = 31 * result + lineNumber;
return result;
}
This will return the correct result.
No comments:
Post a Comment