java - 为什么在重启应用程序时为 Object 生成相同的哈希码?
问题描述
我试图弄清楚哈希码是如何生成的。我偶然发现了一个功能。据我了解,在使用一些随机函数生成的基本实现 hashCode 中。我尝试生成 hashCodes 来查看 hashCode 值。但我注意到每次我开始测试哈希码都是一样的:
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(new Object().hashCode());
}
}
而且我总是看到相同的哈希码:
854507466
1316061703
490150701
1413246829
334203599
1372082959
1946403944
1131645570
209833425
532854629
为什么每次我运行测试时它们都是一样的?
解决方案
将您的 hashCodes 与通过以下方式生成的 hashCodes 进行比较:
System.identityHashCode(Object x)
我的理解是这是默认实现,并从该对象的内存指针位置获取其编号,这将保证唯一性。
推荐阅读
- php - 如何在 SQLSRV 中分离数据
- php - 通过“重置”到当前架构来修复损坏的迁移
- django - 如何在 Django 3 中制作功能加入课程
- python - 当href ='#'在scrapy中时有什么方法可以处理?
- python - AWS Textract - UnsupportedDocumentException - PDF
- azure - 通过数据工厂将数据从 Azure“文件共享”复制到 BLOB 容器
- gremlin - Gremlin Java 使用 DefaultGraphTraversal 抛出顶点已经存在
- html - 在html5文件中使列标准宽度
- php - drupal 7中的CSV导出问题
- python - 使用 Pandas 过滤非结构化数据