關於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