[英]Java - BitSet Replacement
在我的代码中,我试图获取哈希图中是否存在数字。 我的代码如下:
BitSet arp = new BitSet();
for i = 0 to 10 million
HashMap.get (i)
if number exist
arp.set(i , true)
else
arp.set(i , false)
之后,从位集中获得数字i是否存在。 但是,我发现此位集操作相当慢(也尝试使用string = string + 0/1
,更慢)。 有人可以帮助我如何以更快的速度替换此操作。
您的代码确实很难清晰阅读,但是我怀疑您只是在尝试设置BitSet
中的位,这些BitSet
是HashMap
键?
在这种情况下,您的代码应该或多或少
BitSet bits = new BitSet(10000000);
for (Integer k : map.keySet()) {
bits.set(k);
}
即使这不是您的意思,但一般而言, BitSet
的速度很快。 我怀疑是其余的代码很慢。
如果您提供了实际的相关代码,那么我们可能首先发现了一些性能错误。 但是,假设您的代码还可以,并且您对应用程序进行了配置,以确保BitSet
操作实际上很慢:
如果您有足够的可用内存空间,则始终可以选择boolean[]
而不是BitSet
。
BitSet
内部使用long[]
存储单独的位,因此在内存方面非常好,但有时可能会太慢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.