public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public int hashCode() {
return 420;
}
}
根据上述程序,答案是:
答:以 Person 键从 HashMap 中查找值的时间取决于映射的大小。
我不知道为什么答案是上面的。我认为这是错误的 hashcode() 方法实现,但唯一的选项如下:
- 哪种说法是正确的?
- A.从具有 Person 键的 HashMap 中查找值的时间取决于 取决于 map 的大小。
- B.从 HashMap 中删除 Person 键将删除所有映射条目 对于 Person 类型的所有键。
- C.将第二个 Person 对象插入到 HashSet 中将导致 第一个要作为重复项删除的 Person 对象。
- D.判断Person对象是否包含在a中的时间 HashSet 是常量,不依赖于映射的大小。
答案:A
如果有人能对此提供一些理解,那就太好了,因为我无法在网上找到任何答案
最佳答案
HashMap使用hashcode将条目放入桶中并使用equals来定位它们。 如果所有条目都具有相同的哈希码,那么它们最终都会出现在同一个存储桶中。现在,每当您从 map 请求某些内容时,hashmap 都会遍历同一存储桶中的所有条目,并对每个条目调用 equals 来查找您请求的条目。这就是为什么
The time to find the value from HashMap with a Person key depends on the size of the map.
正确答案
关于java - SCJP 书中与集合相关的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29912548/