在 Java 中散列双精度值例子:

2022-09-02 20:20:08

我想知道如何在Java中散列双精度?我已经散列了其他基元数据和对象。我以为我可以使用哈希码方法?从我所看到的来看,这看起来很复杂。我遇到了一些关于创造种子的事情。

我想知道如何做到这一点的任何想法。希望为具有双精度的类输入我的哈希码的其余部分?

我想知道我尝试在java中散列数组列表,数组和其他对象是否存在问题。我的一些类包含数组列表。

非常感谢


答案 1

Double.hashCode() complex?它基本上转换为a(这里没有魔法,毕竟它们都只是内存中的64位值),计算哈希非常简单。->转换是通过公共静态 doubleToLongBits() 完成的。这有什么复杂之处?doublelonglongdoublelong

例子:

Double.valueOf(42.5).hashCode();        //better answer to everything

Long.valueOf(Double.doubleToLongBits(42.5)).hashCode();

答案 2

根据你需要什么,你可以用一个非常简单的方法,只是修改它。

 int hash(double d) {
   return d % 71; //use a prime number here
 }

如果它只是为了在哈希中存储几个双精度,这应该可以做到。如果你想传播哈希,只需增加“71”