?BitSet:是一個(gè)位元組集合,用它可以表示整數(shù)和進(jìn)行求兩個(gè)集合的交集、並集等運(yùn)算。
????我們知道,電腦儲(chǔ)存的最小單位是位元bit,而我們?cè)趈ava程式中的最小單位是位元組Byte,他們之間的換算關(guān)係是1Byte=8bit。 BitSet是根據(jù)位元所在的位置表示整形資料大小。例如:16在第16個(gè)位置,5在第5個(gè)位置,因此下面的BitSet可以表示集合{5,16}
????透過分析BitSet的來源程式碼,我們知道,BitSet提供兩個(gè)構(gòu)造函數(shù),一個(gè)是BitSet(),不帶參數(shù),一個(gè)是BitSet(int nbits);如果我們使用不帶參數(shù)的構(gòu)造函數(shù)來建立BitSet對(duì)象,則建立一個(gè)預(yù)設(shè)長(zhǎng)度為64位元bit的對(duì)象,這個(gè)對(duì)象可以表示的資料大小就是1~64,不過即使我們放入大於64的資料也沒有關(guān)係,因?yàn)锽itSet是自增長(zhǎng)的,最大值可以是Integer.MAX_VALUE=2147483647。
????知道了??表示方法,對(duì)它的作用就不難理解了,比方說上面的集合與{2,23,48}求並集:則變成了比特碼的或運(yùn)算。
00000000 00000000 00000000 00000000 00000000 00000000 10000000 00100000 0000000 10000000006 0000 00000000 00000000 01000000 00000000 00000010 ?? 集合{2,23,48}
或運(yùn)算後的結(jié)果就是
00000000 01000000 10000000 00100010,所以結(jié)果就是{2,5,16,23,48}其它更大的數(shù)字無非就是比特碼更長(zhǎng)。注意:
如果建立一個(gè)最大位數(shù)的BitSet集合BitSet bitSet = new BitSet(Integer.MAX_VALUE);
會(huì)報(bào)如下錯(cuò)誤:Exception in thlang "O會(huì)回報(bào)heap space
at java.util.BitSet.initWords(BitSet.java:144)
at java.util.BitSet.
(BitSet.java:139)其它報(bào)java.lang.OutOfMemoryError: Java heap space錯(cuò)誤的時(shí)候也可以這樣更改

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)
