Java BitSet 簡單使用

2021-09-10 07:45:57 字數 1249 閱讀 4966

bitset 簡單說明

在記憶體中是一串連續的記憶體空間,從0開始的正整數

按位操作,每一位的值只有兩種 0 或者 1,來表示某個值是否出現過。

2:簡單使用

把 1 3 5 三個數放bitset中

bitset bitset=newbitset();

bitset.set(1);

bitset.set(3);

bitset.set(5);

這時候bitset的長度是 最大數+1=5+1=6

for(inti=0;isystem.out.print(bitset1.get(i)+"-");

得到的結果

false-true-false-true-false-true

0      1      2    3     4      5

從結果可以看到,為true 說明這個位置上的數是存在的,預設每個位上為0,也就是false。

3:簡單應用

某品牌下有100個會員,會員的id,按入會先後 從1-100,

會員標籤:性別-女,偏愛顏色-白色,職業-程式設計師

每個標籤對應乙個bitset,每個bitset中儲存該標籤對應的會員id

性別-女標籤下的會員有:2 66 88 90 32  bitset1

偏愛顏色-白色的會員有:66 89 55 22    bitset2

職業-程式設計師的會員有:88 99 90 22      bitset3

程式設計:

(1) 從資料中查出性別為女的會員對應的id

(2) 把id放入 bitset.set(id);

其他標籤依次放入 不同的bitset

操作(1) 查詢喜歡白色的女會員  兩個bitset1.and(bitset2),再輸出bitset1,則得到66

(2) 查詢女會員和職業為程式設計師的會員 bitset1.or(bitset3),再輸出bitset1,則得到2,22,32,66,88,90,99,合併兩個集合,並自動去重。

4:bitset值持久化

把bitset中二進位制數,轉化為十進位制儲存到資料庫中,這樣方便在其他的統計中使用。

二進位制過長的話,要使用biginteger來轉換。

說明:若有10w個會員,二進位制轉換為十進位制大概需要18秒;100w 要30分鐘

會員超過10w的話 這種持久話就不太適合了,還沒有找到好辦法,繼續探索。

舉例解釋java BitSet

如果想看高大上的可以點下面的鏈結 bitset 裡面有乙個long陣列,放入數字除以64取整則表示這個數字在long陣列的下標,且用餘數進行計算。set方法 比如放入乙個3,則把1左移三位 1000 並且 上long 0 裡面的值 0 放入 long 0 如果此時再放入乙個5則把1左移5位 1000...

簡單使用Git

1.登陸伺服器 git 伺服器位址 git xx.yy.zz.com.cn ssh p steven git xx.yy.zz.com.cn 密碼認證後 伺服器控制台下 cd mnt disk1 moblin kernel linux 2.6.29.y.git git branch 列出branch...

vector 簡單使用

vector是c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector之所以被認為是乙個容器,是因為它能夠像容器一樣存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。為了可以使用vector,必須在你的標頭...