天天看點

BitSet的使用場景及簡單示例BitSet簡介基本原理使用場景代碼示例

    類實作了一個按需增長的位向量。位 set 的每個元件都有一個boolean值。用非負的整數将bitset的位編入索引。可以對每個編入索引的位進行測試、設定或者清除。通過邏輯與、邏輯或和邏輯異或操作,可以使用一個bitset修改另一個bitset的内容。

    預設情況下,set 中所有位的初始值都是false。

    每個位 set 都有一個目前大小,也就是該位 set 目前所用空間的位數。注意,這個大小與位 set 的實作有關,是以它可能随實作的不同而更改。位 set 的長度與位 set 的邏輯長度有關,并且是與實作無關而定義的。

    除非另行說明,否則将 null 參數傳遞給bitset中的任何方法都将導緻nullpointerexception。

    在沒有外部同步的情況下,多個線程操作一個bitset是不安全的

    bitset是位操作的對象,值隻有0或1即false和true,内部維護了一個long數組,初始隻有一個long,是以bitset最小的size是64,當随着存儲的元素越來越多,bitset内部會動态擴充,最終内部是由n個long來存儲,這些針對操作都是透明的。

    用1位來表示一個資料是否出現過,0為沒有出現過,1表示出現過。使用用的時候既可根據某一個是否為0表示,此數是否出現過。

    一個1g的空間,有 8*1024*1024*1024=8.58*10^9bit,也就是可以表示85億個不同的數

    常見的應用是那些需要對海量資料進行一些統計工作的時候,比如日志分析、使用者數統計等等

    如統計40億個資料中沒有出現的資料,将40億個不同資料進行排序等。

    現在有1千萬個随機數,随機數的範圍在1到1億之間。現在要求寫出一種算法,将1到1億之間沒有在随機數中的數求出來

參考:

http://blog.csdn.net/haojun186/article/details/8482343