gpt4 book ai didi

hashcode - Objects.hash() 与 Objects.hashCode(),需要澄清

转载 作者:行者123 更新时间:2023-12-02 10:42:42 26 4
gpt4 key购买 nike

从 Java 7 开始,我们有了

o.hashCode();
Objects.hashCode(o);
Objects.hash(o);

前两个与空检查大致相同,但最后一个是什么?

When a single object reference is supplied, the returned value doesnot equal the hash code of that object reference.

这是为什么呢?我的意思是,我们不需要三个方法来做同样的事情,我明白,但是为什么我们需要 Objects.hash() 呢?您什么时候会选择使用其中一种而不是另一种?

最佳答案

请参阅 hashCode 的文档和 hashhash 接受 Object...,而 hashCode 接受 Object。给出的例子是:

@Override public int hashCode() {
return Objects.hash(x, y, z);
}
  • Objects.hash(Object...values) 应该在您需要对象序列的哈希值(例如当定义您自己的 hashCode 方法并希望为构成对象身份的多个值提供简单编码的哈希时。
  • Objects.hashCode(Object o) 应该在您想要单个对象的哈希值时使用,如果对象为 null,则不抛出异常。
  • Object::hashCode() 应该在您需要单个对象的哈希值时使用,如果对象为 null,则会抛出异常。

请注意,hash(o)hashCode(o) 不一定返回相同的内容!如果您要为单个对象执行此操作,则可能应该使用 hashCode

关于hashcode - Objects.hash() 与 Objects.hashCode(),需要澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11597386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com