[英]Algorithm for generating the same unique ID/Hash as long for values in float[]
对于很多具有2d几何形状的float []数组,我试图将这些顶点列表缓存到某些键控贴图中。
出于(读取)性能原因,具有long或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 [])无法正常工作?
您可以使用Cantor配对功能或Szudzik方法。 检查此答案 。 对于两个以上的数字,您可以使用配对功能。
任何哈希或校验和算法都将为您提供稳定的结果(对于相同的内容始终提供相同的答案)。 算法的质量将决定您有多少个冲突(返回相同结果的不同内容)。 您可以使用标准的Java CRC32校验和,但它确实需要字节而不是浮点数。
我认为您对使用Arrays.hashCode(float[])
将完全返回您想要的内容(根据给定数组中的内容确定地计算出的相对稳定的int)。
请注意,如果您开始缓存顶点数组,则无论如何都要对这些数组进行突变或更改,都需要格外小心。 (缓存的条目将需要无效,并且您可能最终共享了您本不想共享的突变。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.