Java.util包下BitSet的用法

    BitSet:是一個字節集合,用它能夠表示整數和進行求兩個集合的交集、並集等運算。java

    咱們知道,計算機存儲的最小單位是比特bit,而咱們在java程序中的最小單位是字節Byte,他們之間的換算關係是1Byte=8bit。BitSet是根據比特所在的位置表示整形數據大小。例如:16在第16個位置,5在第5個位置,所以下面的BitSet能夠表示集合{5,16}函數

    

    

    經過分析BitSet的源代碼,咱們知道,BitSet提供兩個構造函數,一個是BitSet(),不帶參數,一個是BitSet(int nbits);若是咱們使用不帶參數的構造函數建立BitSet對象,則建立一個默認長度爲64比特bit的對象,這個對象能夠表示的數據大小就是1~64,不過即便咱們放入大於64的數據也沒有關係,由於BitSet是自增加的,最大值能夠是Integer.MAX_VALUE=2147483647。spa

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

00000000 00000000 00000000 00000000 00000000 00000000 10000000 00100000    集合{5,16}內存

00000000 00000000 10000000 00000000 00000000 01000000 00000000 00000010    集合{2,23,48}it

或運算後的結果就是io

00000000 00000000 10000000 00000000 00000000 01000000 10000000 00100010,因此結果就是{2,5,16,23,48}thread

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

注意:程序

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

         會報以下錯誤

         Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

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

   at java.util.BitSet.<init>(BitSet.java:139)

   at Test.main(Test.java:10)

         這說明,java 堆heap內存不足,能夠經過以下方式更改:

   

    其它報java.lang.OutOfMemoryError: Java heap space錯誤的時候也能夠這樣更改

相關文章
相關標籤/搜索