对于很多具有2d几何形状的float []数组,我试图将这些顶点列表缓存到某些键控贴图中。
出于(读取)性能原因,具有long或int的键应该比字符串1快。
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校验和,但它确实需要字节,而不是浮点数。
我认为您使用的建议Arrays.hashCode(float[])
将完全返回您想要的内容(根据给定数组中的内容确定地计算出的相对稳定的int)。
请注意,如果您开始缓存顶点数组,则无论如何都要更改或更改这些数组,需要格外小心。(缓存的条目将需要无效,并且您可能最终共享了您本不想共享的突变。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句