Java.util包下BitSet的用法

阿神
發布: 2016-11-07 17:37:48
原創
2140 人瀏覽過

BitSet:是一個位元組集合,用它可以表示整數和進行求兩個集合的交集、並集等運算。

我們知道,電腦儲存的最小單位是位元bit,而我們在java程式中的最小單位是位元組Byte,他們之間的換算關係是1Byte=8bit。 BitSet是根據位元所在的位置表示整形資料大小。例如:16在第16個位置,5在第5個位置,因此下面的BitSet可以表示集合{5,16}

Java.util包下BitSet的用法

透過分析BitSet的來源程式碼,我們知道,BitSet提供兩個構造函數,一個是BitSet(),不帶參數,一個是BitSet(int nbits);如果我們使用不帶參數的構造函數來建立BitSet對象,則建立一個預設長度為64位元bit的對象,這個對象可以表示的資料大小就是1~64,不過即使我們放入大於64的資料也沒有關係,因為BitSet是自增長的,最大值可以是Integer.MAX_VALUE=2147483647。

知道了表示方法,對它的作用就不難理解了,比方說上面的集合與{2,23,48}求並集:則變成了比特碼的或運算。

00000000 00000000 00000000 00000000 00000000 00000000 10000000 00100000 0000000 10000000006 0000 00000000 00000000 01000000 00000000 00000010 集合{2,23,48}

或運算後的結果就是

00000000 01000000 10000000 00100010,所以結果就是{2,5,16,23,48}

其它更大的數字無非就是比特碼更長。

注意:

如果建立一個最大位數的BitSet集合BitSet bitSet = new BitSet(Integer.MAX_VALUE);

會報如下錯誤

:Exception in thlang "O

會回報heap space

at java.util.BitSet.initWords(BitSet.java:144)

at java.util.BitSet.

(BitSet.java:139)

at Test.

這說明,java 堆heap內存不足,可以通過如下方式更改:

其它報java.lang.OutOfMemoryError: Java heap space錯誤的時候也可以這樣更改Java.util包下BitSet的用法

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!