[英]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.