gpt4 book ai didi

java - 当我们多次运行应用程序时为对象获取唯一且相同哈希码的算法

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:42 27 4
gpt4 key购买 nike

我正在使用 Java。我想知道,当我多次运行该应用程序时,是否有任何算法可以给我一个唯一且相同的哈希码,从而避免哈希码冲突。

我知道对于相似的对象,jvm 返回相同的哈希码,而对于不同的对象,它可能返回相同或不同的哈希码。但是我想要一些逻辑来帮助为每个对象生成唯一的哈希码。

唯一意味着一个对象的哈希码不应与任何其他对象的哈希码冲突。同样意味着当我多次运行该应用程序时,它应该返回相同的哈希码,无论它之前返回给我什么

最佳答案

Java 中的默认哈希码函数可能会为每次 JVM 调用返回不同的哈希码,因为它能够使用对象的内存地址,对其进行处理并返回。

然而,这不是好的编码习惯,因为相等的对象应该总是返回相同的哈希码!请阅读 hash code contract了解更多。 Java 中的大多数类已经实现了哈希码函数,该函数在每次 JVM 调用时返回相同的值。

为简单起见:所有可能存储在某个集合中的数据保存对象都应该有一个 equals 和 hashcode 实现。如果您使用 Eclipse 或任何其他合理的 IDE 进行编码,则可以使用自动创建函数的向导。

当我们这样做的时候:恕我直言,最好的做法是同时实现 Comparable<T>接口(interface),因此您也可以使用 SortedSets 和 TreeMaps 中的对象。

当我们在做的时候:如果其他人想要你的对象,别忘了SerializableCloneable .

关于java - 当我们多次运行应用程序时为对象获取唯一且相同哈希码的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4161964/

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