gpt4 book ai didi

dart - 在Dart中,hashCode()方法调用能否在相等(==)的对象上返回不同的值?

转载 作者:行者123 更新时间:2023-12-03 04:17:26 24 4
gpt4 key购买 nike

我的近期项目是开发一个CheckSums系统,以证明两个在功能上相等的对象(在功能上)是相等的-就其关键属性而言,它们具有相同的值。 (发现日期/时间不能包含在内,因此不能在更大的对象上使用JSON-duh :)(出于我的目的))。

为此,对选定的字符串调用hashCode()方法似乎是一种方法。

在实现此功能后,我注意到实际上在多次运行功能上“相同”的最高级别对象时,我获得了截然不同的值。

我还没有四舍五入一些“数字”,其中有整数, bool(boolean) 值,字符串等等。

我一直认为,在同一组值上的hashCode会返回相同的数字,我是否遗漏了什么?

顺便说一句,我发现关于hashCode()的资料的唯一上下文是WebSockets。

当然,我可以将自己的String写入一个唯一值,但是我想了解这是否是Dart或其他问题。

最佳答案

我可以尝试回答标题中提出的问题:“hashCode()方法调用可以在相等(==)对象上返回不同的值吗?”

简短答案:如果两个对象的哈希码相等(==),则它们必须相同。

如果覆盖hashCode,则还必须覆盖equals==定义的两个相等的对象也必须具有相同的哈希码。

但是,哈希码不必唯一。也就是说,一个完全有效的哈希码是1值。但是,良好的哈希码应均匀分布。

Object的文档中:

Hash codes are guaranteed to be the same for objects that are equal when compared using the equality operator ==. Other than that there are no guarantees about the hash codes. They will not be consistent between runs and there are no distribution guarantees.

If a subclass overrides hashCode it should override the equality operator as well to maintain consistency.

关于dart - 在Dart中,hashCode()方法调用能否在相等(==)的对象上返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544151/

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