相关疑难解决方法(0)

为什么String中的Java hashCode()使用31作为乘数?

每Java文档中,哈希代码String对象被计算为:

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Run Code Online (Sandbox Code Playgroud)

使用int算术,其中s[i]是 字符串的第i个字符,是字符串n的长度,并^指示取幂.

为什么31用作乘数?

我知道乘数应该是一个相对较大的素数.那么为什么不是29岁,37岁,甚至97岁?

java string algorithm hash

461
推荐指数
11
解决办法
14万
查看次数

在Dart中,如何比较两个对象以查看它们是否是同一个实例?

假设我有一个包含许多实例变量的类.我想重载==运算符(和hashCode),以便我可以将实例用作映射中的键.

class Foo {
  int a;
  int b;
  SomeClass c;
  SomeOtherClass d;
  // etc.

  bool operator==(Foo other) {
    // Long calculation involving a, b, c, d etc.
  }
}
Run Code Online (Sandbox Code Playgroud)

比较计算可能很昂贵,所以我想检查是否otherthis进行计算前的实例相同.

如何调用Object类提供的==运算符来执行此操作?

dart

9
推荐指数
2
解决办法
4409
查看次数

标签 统计

algorithm ×1

dart ×1

hash ×1

java ×1

string ×1