对于很多具有2d几何的float[]数组,我尝试将这些顶点列表缓存到一些键映射中。
对于(阅读)原因,长键或int键应该比字符串键快吗?
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[])不能工作?
发布于 2014-12-01 00:34:52
任何散列或校验求和算法都会给出一个稳定的结果(对于相同的内容总是相同的答案)。算法的质量将决定您有多少冲突(返回相同结果的不同内容)。您可以使用标准的Java CRC32校验,但它确实需要字节,而不是浮动。
我认为您使用[Arrays.hashCode(float[])](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#hashCode(float[]%29)的建议将完全返回所需的内容(从给定数组中的内容确定地计算出一个相对稳定的int )。
请注意,如果开始缓存顶点数组,无论如何,如果这些数组发生了变异或更改,则需要格外小心。(缓存的条目将需要无效,您可能最终会共享并非有意共享的突变。)
发布于 2014-11-30 21:30:46
您可以使用Cantor配对函数或Szudzik方法。看看这个回答。对于两个以上的数字,您可以使用配对函数。
https://stackoverflow.com/questions/27216265
复制相似问题