我需要实现一种非常有效的方法来检查java中的一小部分项目(小于100,通常大约10)中是否存在某个键(长值)。
此检查必须尽可能高效,因为它将每秒进行几次(超过1000次,我正在处理多播源,我想丢弃我不需要处理的消息)
在应用程序生命周期中,需要检查的项目几乎没有变化,并且在性能方面可能很昂贵。
由于
感谢所有提示回复。我担心的是,我的长按键可能非常集中在长距离的小范围内,我很担心。如果你们认为这不是问题,我会试一试。
答案 0 :(得分:3)
使用HashSet<Long>
- contains()
返回将需要纳秒(字面意思)。
代码如下:
private static Set<Long> keys = new HashSet<Long>();
// populate keys
if (keys.contains(requestKey)) { // this call is super fast!
// ignore request
}
不要担心你的渴望在一起“亲密”。 hashCode()
的{{1}}足够“分散”,对于所有实际目的而言,它没有任何模式 - 也就是说,“关闭”的Longs没有“接近”的哈希码。
答案 1 :(得分:0)