La compréhension contient méthode de Java HashSet

Newbie question à propos de java HashSet

Set<User> s = new HashSet<User>();
User u = new User();
u.setName("name1");
s.add(u);
u.setName("name3");
System.out.println(s.contains(u));

Quelqu'un peut m'expliquer pourquoi ce code de sortie faux ? En outre, ce code ne fait même pas appel de méthode equals de l'Utilisateur. Mais selon les sources de HashSet et HashMap il faut l'appeler. La méthode equals de l'Utilisateur appelle simplement égale nom de l'utilisateur. La méthode hashCode retour hashCode de nom de l'utilisateur

Avez-vous mettre en œuvre User.equals() méthode?
Pour citer Jon Skeet "des Objets dans hashsets devrait être immuable, ou vous avez besoin de faire preuve de discipline dans pas de les changer après qu'ils ont été utilisés dans un hashset (ou table de hachage)." - stackoverflow.com/questions/4718009/...

OriginalL'auteur user12384512 | 2011-08-11