小编Ala*_*ght的帖子

在Dart中覆盖哈希码的好方法是什么?

我发现自己想要覆盖一个对象的哈希码和==,我想知道是否有关于如何实现依赖于多个属性的哈希码的最佳实践,并且似乎有一些特定于Dart的注意事项.

最简单的答案是将所有属性的哈希值混合在一起,这可能不是太糟糕.在Dart Up和Running中也有一个例子,网址是https://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html

  // Override hashCode using strategy from Effective Java, Chapter 11.
 int get hashCode {
   int result = 17;
   result = 37 * result + firstName.hashCode;
   result = 37 * result + lastName.hashCode;
   return result;
 }
Run Code Online (Sandbox Code Playgroud)

但似乎它期望截断整数语义,并且在Dart中溢出JS整数的范围似乎不适合散列.

我们也可以这样做,并在每次操作后截断为32位.

对于我的应用程序,预期的集合大小非常小,几乎任何事情都可以,但我很惊讶没有看到一般情况的标准配方.有没有人有这方面的经验或经验?

hashcode dart

25
推荐指数
5
解决办法
5645
查看次数

标签 统计

dart ×1

hashcode ×1