java - SCJP 书中与集合相关的逻辑

标签 java scjp

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/

相关文章:

java - 广度优先搜索移动点游戏

java - Java如何处理内存中的String对象?

java - x = x++ 不会递增,因为++ 是在赋值后应用的?

java - Var-arg of object arrays vs. object array——试图理解一道SCJP自测题

java - 泛型 super 与扩展

java - Youtube Oauth 回调不起作用

java - 具有初始化变量的 NPE

java - 使用 PreparedStatement 和 executeBatch 在 jdbc 上最快 'update'

java - 使用 Transformer 格式化输出 XML

java - SCJP 模拟题 : How many objects are eligible for garbage collection?