【发布时间】:2017-06-05 07:33:52
【问题描述】:
如果我覆盖模型类中的 equals 方法并始终返回 false。并且 hashCode 总是返回一个常量值。如果我创建一个对象并将其添加到 Set HashSet/HashMAp 如何检测重复项?
public class Employee {
int id;
String name;
@Override
equals(){
return false;
}
}
public static void main(String[] args) {
HashMap<Employee,String> hk= new HashMap<Employee,String>();
Employee e1 = new Employee();
e1.setId(18);
e1.setName("roohi");
hk.put(e1, "hello");
hk.put(e1, "hello");
}
如果 Equals 方法返回 false,即 e1.equals(e1) 返回 false。所以值应该被添加两次,但它只添加了一个。谁能解释一下。我在 HashCode 和 equals 合同上搜索并清除了我的概念,但在这里我失败了。
【问题讨论】:
-
不会的,都是单独的条目(在同一个桶中)