Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 生成与float[]中的值长度相同的唯一ID/哈希的算法_Java_Algorithm_Math_Libgdx - Fatal编程技术网

Java 生成与float[]中的值长度相同的唯一ID/哈希的算法

Java 生成与float[]中的值长度相同的唯一ID/哈希的算法,java,algorithm,math,libgdx,Java,Algorithm,Math,Libgdx,有很多二维几何体的float[]数组,我试图将这些顶点列表缓存到一些关键点贴图中 出于(读取)性能的原因,长或int键应该比字符串键快 objectmap<key,float[]> 对于float[]中的相同值,每个float[]值生成的键应该是唯一的,即 arrAKey = generate from float[]{-10,10,20,20,30,30} arrBKey = generate from float[]{-10,10} arrCKey = generate

有很多二维几何体的float[]数组,我试图将这些顶点列表缓存到一些关键点贴图中

出于(读取)性能的原因,长或int键应该比字符串键快

objectmap<key,float[]> 
对于float[]中的相同值,每个float[]值生成的键应该是唯一的,即

arrAKey = generate from float[]{-10,10,20,20,30,30} 
arrBKey = generate from float[]{-10,10} 
arrCKey = generate from float[]{10,-10} 

arrAKey!=arrBKey
arrBKey!=arrCKey
arrAKey!=arrCKey
**编辑
为什么java.util.Arrays.hashCode(float[])无法工作?

您可以使用Cantor配对函数或Szudzik方法。看看这个。对于两个以上的数字,您可以使用配对函数的配对。

任何哈希或校验和算法都会给您一个稳定的结果(对于相同的内容,总是相同的答案)。算法的质量将决定您有多少冲突(返回相同结果的不同内容)。您可以使用标准,但它确实需要字节,而不是浮点

我认为您使用的建议将返回您想要的结果(根据给定数组中的内容确定地计算出一个相对稳定的int)


请注意,如果您开始缓存顶点数组,那么如果这些数组在任何情况下发生了变异或更改,则需要格外小心。(缓存的条目将需要失效,您可能会共享您不想共享的突变。)

修复了这个问题,因为float[]键中的相同值应该是相同的。我们是否可以对float数组进行排序?哈哈哈,然后我想你明白了:)散列码对于不同的对象不一定是唯一的——不同的对象可能有相同的散列码。因此,如果假设散列码是唯一的,那么程序可能不会始终正常工作。
arrAKey = generate from float[]{-10,10,20,20,30,30} 
arrBKey = generate from float[]{-10,10} 
arrCKey = generate from float[]{10,-10} 

arrAKey!=arrBKey
arrBKey!=arrCKey
arrAKey!=arrCKey