首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最快的集合包含5-10个整数的方法

最快的集合包含5-10个整数的方法
EN

Stack Overflow用户
提问于 2014-11-12 03:29:51
回答 2查看 136关注 0票数 3

我有一个小问题:我有一个包含5-10个整数的集合。它们不会改变,也不会做任何其他事情,但它们仍然存在。所以我的问题是哪个集合对于contains方法是最好的/最快的: ArrayList,LinkedList,Vector,HashSet还是...?

EN

回答 2

Stack Overflow用户

发布于 2014-11-12 04:04:30

由于计算机加载数据的方式(CPU优化假设您将使用相邻的内存地址)

如果实际的数字将是小数字,Java将优化整数(非原语),因此使用ArrayList应该会产生与使用int[]类似的结果。

如果使用较大的数字(不在-128到127之间),则int[]数组将产生更好的结果。

与在int[]阵列上实际运行5-10相比,使用哈希集的开销可能会更高。

只有在每秒运行这些比较至少100,000次的情况下,以上所有操作才会产生影响。比这还少的任何东西,都无关紧要。

总结一下

Code << int[]数组<< ArrayList << HashSet

票数 1
EN

Stack Overflow用户

发布于 2014-11-12 10:33:00

我敢打赌,如果你想花一些不可忽略的时间来创建集合,那么通过perfect hashing可以获得最好的结果。有一些计算这种散列的通用方法,但在您的例子中,由于它们的固定开销,它们可能不如简单的数组扫描。

在创建时间无关紧要的情况下,考虑如下answer of mine中的算法,其中

代码语言:javascript
复制
TABLE[(MULTIPLIER * c) >> SHIFT] == c

用于测试c是否包含在集合中。找到合适的MULTIPLIER需要一些时间,但测试速度非常快。

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

https://stackoverflow.com/questions/26872951

复制
相关文章

相似问题

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