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

2024-02-27

从 Java 7 开始,我们有

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

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

当提供单个对象引用时,返回值不会 不等于该对象引用的哈希码。

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


请参阅文档hashCode http://docs.oracle.com/javase/7/docs/api/java/util/Objects.html#hashCode%28java.lang.Object%29 and hash http://docs.oracle.com/javase/7/docs/api/java/util/Objects.html#hash%28java.lang.Object...%29. hash takes Object... while hashCode takes Object。给出的例子是:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objects.hash() 与 Objects.hashCode(),需要澄清 的相关文章

  • 如何将目录及其属性/权限从一个位置复制到另一个位置?

    我看到很多examples https stackoverflow com a 10068306 14731那个使用Files walkFileTree 将目录及其内容从一个位置复制到另一个位置 但它们没有考虑目录的文件属性和权限 意思是
  • Files.createDirectory() :FileAlreadyExistsException

    我在使用 Java 7 时遇到了一个看似奇怪的问题Files班级 我想在开始编写之前确保我的目录和文件存在 以避免FileNotFoundException 并根据Javadocs http docs oracle com javase 7
  • GroovyClassLoader 和导入

    我在 Java 类中使用 GroovyClassLoader 来解析某个 理想情况下是复杂的 groovy 文件 将在下一步中执行 在MyClass java中调用 final Class parsedClass groovyClassLo
  • Java 7 中是否会包含结构和值类型(如 C# 的)?

    Java 7 中是否会包含结构和值类型 如 C 的 这是 John Rose Oracle JVM 开发人员 关于此提案的博客文章 它已经存在了一段时间 但还没有作为官方 JSR 即使在 java 9 中 这似乎也不太可能发生 http b
  • 在 Java 中对双精度值进行哈希处理

    我想知道如何在 Java 中对 double 进行哈希处理 我已经散列了其他原始数据和对象 我想我可以使用 hashcode 方法吗 从我所看到的来看 这看起来相当复杂 我遇到了一些关于创造种子的事情 我想知道关于如何解决这个问题的任何想法
  • Java SafeVarargs 注释,是否存在标准或最佳实践?

    我最近接触到了java SafeVarargs注解 谷歌搜索 Java 中的可变参数函数不安全的原因让我很困惑 堆中毒 擦除类型 所以我想知道一些事情 是什么使得可变参数 Java 函数在 SafeVarargs有什么意义 最好以深入示例的
  • htmlunit 在运行项目后总是给出多个 javascript 异常

    我正在开发一个项目 该项目检查导入的电子邮件列表 以查看用户是否在雅虎上注册 当我单击 开始 按钮时 它应该转到 yahoo 邮件注册页面并检查此导入的 txt 文件中的每封电子邮件 我依赖 htmlunit 库 但它总是给出异常 尽管禁用
  • javascript(类java)哈希码实现

    以下代码是我对相当通用的 javascript 哈希代码实现的尝试 我计划将此代码与哈希表实现 例如 jshashtable 结合使用 该哈希表实现使用 hashCode 如果为键定义 我尝试严格遵守 java 的数字 字符串和数组的哈希码
  • HashCode 给出负值

    我通过执行以下函数将传入字符串转换为哈希码 但某些值是负数 我认为哈希值不应该是负数 请告诉我我做错了什么 int combine srcadd dstadd sourceport destinationport protocol hash
  • 具有 AsynchronousServerSocketChannel 的多线程服务器

    我必须实现一个应该接受更多连接的服务器 没有任何更深入的思考 我决定使用新的 JAVA NIO 2 类 我目前的做法是 final Semaphore wait new Semaphore 1 while true wait acquire
  • java 1.7 中的无效标志参数

    我的任务是使用 Java 7 创建 spring boot 应用程序 因此 像往常一样 我在 start spring io 资源上创建了一个模板 并通过以下方式打开他File gt New gt Project from Existing
  • 如何获取 Java7 应用程序的 CPU、RAM 和网络使用情况

    我找到了这篇旧文章如何在 Java 中监控计算机的 cpu 内存和磁盘使用情况 https stackoverflow com questions 47177 how to monitor the computers cpu memory
  • 从 Java 6 升级到 Java 7 后 Kerberos 损坏

    我有一个使用 spring security kerberos 扩展的工作应用程序 在 jboss 上运行 运行 java 6 我正在将 jvm 从 java 6 升级到 java 7 当我这样做时 使用与 java 6 相同的代码库和相同
  • 如何将 Java 7 与 Eclipse Indigo 3.7.1 一起使用

    据我了解Eclipse 靛蓝 3 7 1 http www infoq com news 2011 09 eclipse indigo 371现在应该支持 Java 7 我下载了Eclipse 3 7 1 和 JDK 1 7 0 并在 Ec
  • 如何在 Netbeans 中设置 java 编译器

    我正在进入 Java7 开发 并且我已将 JDK7 添加到Java 平台并在项目属性中选择它 但是当我编译时 我收到如下消息 warning java lang Boolean class java lang Boolean class m
  • 如何设置IntelliJ IDEA项目SDK

    我刚刚安装了 IntelliJ IDEA 当我尝试创建我的第一个项目时 它要求我设置项目 SDK 当我单击 JDK 时 它要求我选择 JDK 的主目录 如下图所示 我无法找到它在哪里 对于新项目 选择 jdk 的主目录 eg C Java
  • 编译器错误:对调用的引用不明确

    Case 1 static void call Integer i System out println hi i static void call int i System out println hello i public stati
  • 应用程序在 Mac OS X 上使用 Apple 的 Java 6 而不是 Oracle 的 Java 7?

    我正在使用安装了 Oracle Java 7 的 Mac OS X 测试我当前的应用程序 它使用的是 Apple 的 Java 6 而不是 Oracle 的 Java 7 系统默认输出为java version正在显示7 我尝试了不同网站中
  • 证明:为什么 java.lang.String.hashCode() 的实现与其文档相符?

    JDK 文档为java lang String hashCode http java sun com javase 6 docs api java lang String html hashCode famously https stack
  • Java的hashCode可以为不同的字符串产生相同的值吗?

    使用java的哈希码函数是否可以为不同的字符串提供相同的哈希码 或者如果可能的话 其可能性的 是多少 Java 哈希码是 32 位 它散列的可能字符串的数量是无限的 所以是的 会发生冲突 百分比是没有意义的 项目 字符串 的数量是无限的 而

随机推荐

  • 仅在打开的文件中搜索和替换 (netbeans)

    有人知道是否可以在 netbeans 中搜索和替换所有打开的文件吗 如果有的话 似乎找不到这个选项 我正在使用 Netbeans 6 9 PHP IDE CTRL SHIFT H 这将打开 在项目中替换 您可以在其中搜索和替换所有打开的项目
  • 如何在atom包内设置断点?

    我想弄清楚为什么这个原子包https github com AtomLinter linter elixirc https github com AtomLinter linter elixirc 行为不端 它的作者说我应该在包的某些函数中
  • Asp .Net Core 2 + SignalR (1.0.0-alpha2-27025) + /signalr/negotiate 404 错误

    我将 SignalR 添加到 ASP Net Core 2 应用程序 packages Microsoft AspNetCore All 版本 2 0 0 Microsoft AspNetCore SignalR 版本 1 0 0 alph
  • ES6 导出对象的所有值

    假设我有一个模块 my module js 有一个对象 该对象应该是它的返回值 let values a 1 b 2 c 3 export values results in SyntaxError Unexpected token 所以我
  • FParsec 只解析括号之间的 expr

    我正在编写一个解析器 用于学习 pourpuses 我希望它能够解析类似的结构 let myVar be 40 plus 2 and let myVar be 40 plus 2 没有问题 但我的解析器不 理解 前者 它看到的是40并认为
  • Apache Netbeans 版本 11.1 使用 OpenJDK 11 构建错误

    我有一个使用 JDK 8 和 NB 8 2 创建的项目 我想使用 OpenJDK 11 将该项目迁移到 NB 11 1 环境是 Windows 10 上的 NB 11 1 全新安装 使用 OpenJDK 11 0 2 我将所有源代码和库 j
  • updatepanel 回发后调用 javascript

    我将以下 javascript 代码内联放置 但在 updatepanel 完成回发后它不会触发 function EndRequestHandler sender args alert this should work Sys WebFo
  • Jquery 选项卡,在 Firefox 中重新加载 jQuery HTML 后,未格式化的列表会闪烁

    我正在使用最新的 jQuery 选项卡 并且我的所有选项卡 以及它们上面的其他内容 都位于包含 Div 中 其中一个选项卡中有一个表单 当表单提交时 通过 AJAX 对其进行处理 然后返回的 HTML 替换整个包含的 Div 返回的 HTM
  • 反射应该使用到什么程度?

    我们在项目中遇到了一个非常棘手的场景 我们在项目中使用了很多反射 我们有 由属性和反射驱动的验证框架 使用属性和反射将 DataRow 转换为实体对象的扩展方法 反之亦然 我们对 DataTable 和 EntityCollections
  • 统计PHP页面中所有HTML标签

    我花了时间在正则表达式上解决这个问题但没有结果 我尝试使用 PHP 5 3 解决这个问题 诸如 在页面中重复的次数以及有关页面中所有标签的信息等信息 不幸的是 您的问题目前的形式几乎无法理解 请尝试更新并更具体 如果你想计算页面中所有 HT
  • Intl.DateTimeFormat 选项哈希:使用“2 位数字”获取前导零

    Intl DateTimeFormat en US weekday long year numeric month long day 2 digit hour 2 digit minute 2 digit second 2 digit fo
  • 如何使用 d3.js 将填充部分添加到 SVG 圆圈

    我正在使用 d3 js 生成一些 SVG 圆圈 我能够生成它们 但我不知道如何将它们分成 4 个相等的部分并为每个部分填充颜色 我正在使用 d3 js 版本 4 这是我的小提琴中的 javascript 片段 var nodes type
  • 无法通过curl或Postman访问docker url

    我可以使用以下路径在浏览器中访问我的网站 my dash docker localhost 8000 我正在尝试编写一个API端点 但无法通过Postman或curl访问该网站 curl my dash docker localhost 8
  • 将数据存储到 DOM - 元素值与数据属性

    要将值存储在 DOM 元素中 我们可以通过data属性 abc data item 1 检索做 abc data item 但今天我了解到我们也可以这样做 abc 0 item 1 检索做 abc 0 item 它们之间有什么区别 哪一个更
  • Python 多线程在 IO 任务中没有任何好处?

    我正在尝试用 python 读取数千小时的 wav 文件并获取它们的持续时间 这本质上需要打开 wav 文件 获取帧数并考虑采样率 下面是代码 def wav duration file name wv wave open file nam
  • uitableviewcell 上的 tableview 中出现重复行

    我发现一些帖子与我的问题相似但不完全相同 在我的应用程序中 用户可以在多个 uitableviews 之间导航以深入了解所需的结果 当用户向前 然后向后 然后向前等时 可以注意到行正在被重绘 重写 并且文本变得越来越粗 我发现在一些帖子中这
  • 如何将函数参数传递给 boost::thread_groups::create_thread()

    我是新来的增强线程我试图了解如何将函数参数传递给boost thread groups create thread 功能 在阅读了一些教程和 boost 文档后 我了解到可以简单地将参数传递给这个函数 但我无法让这个方法起作用 我读到的另一
  • 使用 BigQuery 的 QUALIFY 运算符有什么优势?

    我刚刚发现了 BigQuery 的 QUALIFY 运算符 并且一直在以下位置阅读相关内容 https cloud google com bigquery docs reference standard sql query syntax q
  • 如何使用react-google-recaptcha重置Google recaptcha

    看起来谷歌验证码的工作方式是这样的 如果使用特定令牌进行了验证尝试 则无法再次使用它 文档指出 您将需要调用 grecaptcha reset 来要求最终用户再次使用 reCAPTCHA 进行验证 我正在尝试使用react google r
  • Objects.hash() 与 Objects.hashCode(),需要澄清

    从 Java 7 开始 我们有 o hashCode Objects hashCode o Objects hash o 前两个与空检查大致相同 但最后一个是什么 当提供单个对象引用时 返回值不会 不等于该对象引用的哈希码 这是为什么 我的