关于重写对象的hashCode方法和equals方法后HashMap还是可以重复的问题

class User {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public User(String name) { super(); this.name = name; }
@Override public int hashCode() { return 2 * name.hashCode(); }
public boolean equals(Object user) { if (this.getName().equals(((User) user).getName())) { return true; } else return false; }
@Override public String toString() { return “User [name=” + name + “]”; }

代码贴一下。之前一直不成功,因为把equals方法写成了public boolean equals(User user) 。

原因很明了了,object中的equals是被继承了,只不过重载了一下。

因此在hashmap的 put里还是相当于不相等的。

哈哈,顺道复习了下重载和重写。常用但是忘了定义都忘得差不多了。

温故而知新吧。

发表评论

邮箱地址不会被公开。 必填项已用*标注