3 回答

TA貢獻1788條經驗 獲得超4個贊
從一些帶有Sun JDK 1.6計算質數的基準測試中篩選(最好進行10次迭代以進行預熱,給JIT編譯器一個機會,并排除隨機調度延遲,Core 2 Duo T5600 1.83GHz):
除了非常小的大小,BitSet比boolean []更有效的存儲。數組中的每個布爾值都占用一個字節。對于BitSet,runtime.freeMemory()中的數字有些混亂,但更少。
boolean []的CPU效率更高,除了非常大的大小(大約相等)之外。例如,對于大小為100萬的boolean [],大約要快四倍(例如6ms對27ms),而對于一億個,它們大約是偶數。

TA貢獻1799條經驗 獲得超9個贊
Boolean[]
每個布爾值使用大約4-20個字節。boolean[]
每個布爾值使用大約1個字節。BitSet
每個布爾值使用大約1位。
對于您來說,內存大小可能不是問題,在這種情況下,boolean []可能更易于編寫代碼。

TA貢獻1820條經驗 獲得超10個贊
您的問題有些遺漏,但是如果您擔心存儲問題,則可以考慮使用Huffman壓縮技術。例如,00000001可以按頻率壓縮到等于{(7)0, (1)1}。更加“隨機化”的字符串00111010將需要更復雜的表示形式,例如{(2)0, (3)1, (1)0, (1)1, (1)0},并占用更多空間。根據您的位數據的結構,您可能會從中獲得一些存儲方面的好處BitSet。
添加回答
舉報