关于Java HashSet的新手问题理解包含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));
有人可以解释为什么这代码输出错误的?而且这个代码甚至不会调用User的equals方法。但根据HashSet和HashMap的来源,它必须调用它。方法等于用户简单地调用用户名称上的等于。方法hashCode返回用户名的hashCode
你执行'User.equals()'方法? –
引用Jon Skeet“哈希集合中的对象应该是不可变的,或者你需要在哈希集合(或散列表)中使用哈希集合后,不要改变它们。” - http://stackoverflow.com/questions/4718009/mutable-objects-and-hashcode – Qwerky