bjetos como chaves de mapa sem Hashcode e igual a
public class Contact
{
int i;
String name;
public Contact(int iVal, String nameVal)
{
i = iVal;
name = nameVal;
}
}
public class MultiMap
{
public static void main (String args[])
{
java.util.HashMap m = new java.util.HashMap();
Contact m1 = new Contact(1, "name");
Contact m2 = new Contact(1, "name");
m.put(m1, "first");
m.put(m2, "second");
System.out.println(m.get(m1));
System.out.println(m.get(m2));
}
}
Output é:
first
second
Como esse método "get" se comporta? Como m1 e M2 têm os mesmos valores e eu não substitui o hashcode (), o método equals () da classe Object será chamado?
Isso está correto?
Não existe um método de código de hash, portanto, a JVM não tem como ver se os objetos m1 e m2 contêm valores diferente Não existe um método igual a substituído. Assim, o equals () da classe Object é chamado e, como os dois objetos são diferentes, o código acima funciona bem sem m2 substituindo o valor de m