首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为float[]中的值生成相同的唯一ID/Hash的算法

为float[]中的值生成相同的唯一ID/Hash的算法
EN

Stack Overflow用户
提问于 2014-11-30 17:50:22
回答 2查看 685关注 0票数 1

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

对于(阅读)原因,长键或int键应该比字符串键快吗?

代码语言:javascript
复制
objectmap<key,float[]> 

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

代码语言:javascript
复制
keyForVertices = generateKeyFromVertices(float[]{...})

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

代码语言:javascript
复制
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[])不能工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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 )。

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

票数 1
EN

Stack Overflow用户

发布于 2014-11-30 21:30:46

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27216265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档