Если вы посмотрите на эту программу, в классе Location мы переопределяем два метода (equals и hashcode), соответственно возвращая false и 110. Мы создаем один экземпляр класса Location и помещаем в карту два раза.Когда мы возвращаем false из метода equals, почему map перезаписывает последнее значение ключом?
class Location {
long latitude;
long longitude;
public Location(long latitude,int longitude) {
this.latitude = latitude;
this.longitude = longitude;
}
@Override
public boolean equals(Object obj) {
return false;
}
@Override
public int hashCode() {
return 110;
}
@Override
public String toString() {
return String.format("Latitude := %d , Longitude :=%d ", latitude,longitude);
}
}
Map<Location, String> locations = new HashMap<>();
Location l1 = new Location(2,3);
locations.put(l1, "Mumbai");
locations.put(l1,"Pune");
System.out.println(locations+ " with size of :"+locations.size());