gpt4 book ai didi

java - 为 float[] 中的值生成与 long 相同的唯一 ID/Hash 的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:45:04 24 4
gpt4 key购买 nike

对于大量具有 2d 几何图形的 float[] 数组,我试图将这些顶点列表缓存到一些键控映射中。

出于(阅读)性能原因,长型或整型键应该比字符串快?

objectmap<key,float[]> 

是否可以从值创建一个 int/long 键?

keyForVertices = generateKeyFromVertices(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[]) 不起作用?

最佳答案

任何散列或校验和算法都会为您提供稳定的结果(对于相同的内容总是相同的答案)。算法的质量将决定您有多少冲突(返回相同结果的不同内容)。您可以使用标准 Java CRC32 checksummer但它确实需要字节,而不是 float 。

我认为您建议使用 Arrays.hashCode(float[])将准确返回您想要的内容(根据给定数组中的内容确定性地计算出的相对稳定的 int)。

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

关于java - 为 float[] 中的值生成与 long 相同的唯一 ID/Hash 的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com