com.google.common.collect.Ordering.profit 在 64 位地址空间中可靠吗?

发布于 2025-01-03 00:43:55 字数 202 浏览 0 评论 0原文

com.google.common.collect. Arbitration() 声称可以通过 System.identityHashCode(Object) 对任意对象进行可靠的比较。然而,由于 hashCode 是一个 32 位数量,我不知道这如何在 64 位地址空间中工作,其中可能有超过 2**32 个对象实例。我的怀疑有道理吗?

com.google.common.collect.arbitrary() claims to produce a reliable comparison of arbitrary objects via System.identityHashCode(Object). However, since the hashCode is a 32-bit quantity, I don't see how this could work in a 64-bit address space, where there may be more than 2**32 object instances. Is my skepticism justified?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

兮子 2025-01-10 00:43:55

源代码显示,如果不同对象的两个身份哈希码之间发生冲突,比较器会回退到将每个对象与计数器相关联的映射,每次在映射中存储新对象时,计数器都会递增。

请参阅http://docs.guava-libraries.googlecode.com/git-history/v11.0.1/javadoc/src-html/com/google/common/collect/Ordering.html#line.200< /a>

The source code reveals that in case of a collision between two identity hash codes of different objects, the comparator falls back to a map associating each of the objects with a counter that is incremented each time a new object is stored in the map.

See http://docs.guava-libraries.googlecode.com/git-history/v11.0.1/javadoc/src-html/com/google/common/collect/Ordering.html#line.200

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文