Java BitSet 簡單使用


BitSet 簡單說明

   在內存中是一串連續的內存空間,從0開始的正整數

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

2:簡單使用

    1 3 5 三個數放bitSet

   BitSet bitSet=new BitSet();

    bitSet.set(1);

bitSet.set(3);

bitSet.set(5);

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

for(int i=0;i<bitSet1.length();i=i+1) {

System.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,合並兩個集合,並自動去重。

4BitSet值持久化

   bitSet中二進制數,轉化為十進制保存到數據庫中,這樣方便在其他的統計中使用。

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM