J'ai ajouté quelques objets Chien dans le code mentionné ci-dessous. J'ai implémenté des méthodes égales et des méthodes de hachage. Ensuite, tout en essayant d'obtenir la valeur pour objet Dog Je reçois cette sortieHashMap ne donne pas de résultat attendu
5
Third
Sur l'exécution de ce code, la sortie est
5
null
Voici le code
import java.util.HashMap;
public class MapTest {
public static void main(String[] args) {
HashMap<Dog, String> map = new HashMap<Dog, String>();
Dog d1 = new Dog("Tiger");
Dog d2 = new Dog("Tommy");
Dog d3 = new Dog("Jackie");
Dog d4 = new Dog("Sheru");
Dog d5 = new Dog("Rahul");
map.put(d1, "First");
map.put(d2, "Second");
map.put(d3, "Third");
map.put(d4, "Fourth");
map.put(d5, "Fifth");
System.out.println(map.size());
System.out.println(map.get(new Dog("Jackie")));
}
}
class Dog {
private String name;
public Dog(String name) {
this.name = name;
}
public boolean equals(Object obj) {
System.out.println("inside equals");
if ((obj instanceof Dog) && this.name.equals(((Dog) obj).name)) {
return true;
} else {
return false;
}
}
public int hashcode() {
return this.name.hashCode();
}
}
Utilisez le @Override d'annotation pour éviter ce genre de problème faute de frappe https://docs.oracle.com/javase/tutorial/java/annotations/predefined.html –
Always always @Override – GhostCat