When two objects have same value of ele
in class A then those two objects are equal. So I have overridden toString and hashCode to return the object's ele
(not considering the value of s
anywhere).
public class A {
private int ele;
private String s;
public int getEle() {
return ele;
}
public void setEle(int ele) {
this.ele = ele;
}
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
@Override
public int hashCode(){
return ele;
}
@Override
public String toString() {
return String.valueOf(ele);
}
}
public static void main(String[] args) {
Map<A, String> map = new HashMap<>();
A a1 = new A();
a1.setEle(10);
a1.setS("abc");
A a2 = new A();
a2.setEle(10);
a2.setS("efg");
map.put(a1, "val1");
map.put(a2, "val2");
System.out.println(map.get(a1));
System.out.println(map.get(a2));
}
Output:
val1
val2
But if I put value of a1
and a2
in a map, I was expecting either val1
or val2
to be returned for both map.get(a1)
and map.get(a2)
.