在 Java 中。
如何将一组数字(例如整数)映射到另一组数字? 所有数字都是正数,并且所有数字在自己的集合中都是唯一的。
第一组数字可以是任意值,第二组数字表示数组的索引,所以目标是能够通过第一组数字访问第二组数字。这是一对一的关联。
速度至关重要,因为该方法每秒必须调用多次。
编辑:我尝试使用 SE hashmap 实现,但发现它对我的目的来说很慢。
最佳答案
有一篇文章专门针对这个问题(以及解决方案):Implementing a world fastest Java int-to-int hash map
相关代码可以在GitHub repository中找到. (最佳结果在类 IntIntMap4a.java 中)
文章引用:
总结
如果您想优化 HashMap 以提高速度,您必须尽可能多地执行以下列表:
- 使用容量等于 2 的幂的底层数组 - 它将允许您使用便宜的 & 而不是昂贵的 % 作为数组索引
- 不要将状态存储在单独的数组中 - 为空闲/删除的键和值使用专用字段。
- 将键和值交错放置在一个数组中 - 它将允许您免费将一个值加载到内存中。
- 实现策略以摆脱“已删除”的单元格 - 您可以牺牲一些删除性能以支持更频繁的获取/放置。
在计算初始单元格索引时对 key 进行打乱 - 这是处理连续 key 的情况所必需的。
是的,我知道如何使用引文格式。但它看起来很糟糕,而且不能很好地处理项目符号列表。
关于java - 将 int 映射到 int(在 Java 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30788774/