Array [Byte] hashCode()每次在Scala中都返回不同的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Array [Byte] hashCode()每次在Scala中都返回不同的值相关的知识,希望对你有一定的参考价值。

为什么.hashCode()为同一输入返回不同的值?

"ABC".getBytes().hashCode()

enter image description here

答案

这是因为ArrayhashCode不依赖于其值(因为它是可变的],但是它对于每个实例都是唯一的,它使用其内存地址。因此,执行两次代码会创建两个具有不同内存地址和哈希码的数组。

解决方案是使用不变的结构,例如List

"ABC".getBytes().toList.hashCode()
// res: Int = 1984571950

"ABC".getBytes().toList.hashCode()
// res: Int = 1984571950

以上是关于Array [Byte] hashCode()每次在Scala中都返回不同的值的主要内容,如果未能解决你的问题,请参考以下文章

进程输出是不是以 EOF 结尾,如果是,如何删除?

将 BYTE* 转换为 Array<byte>^

==equals和hashCode小结

将 Scala 中的任何类型转换为 Array[Byte] 并返回

split-array-largest-sum(参考了discuss)

为啥 Spark 在创建 DataFrame 时会推断二进制而不是 Array[Byte]?