BitSet位集合,乙個重複校驗工具

2021-10-10 17:02:39 字數 926 閱讀 4814

bitset,位集合,用於判斷乙個int數字是否存在與bitset中。

使用乙個或多個long儲存資料,占用記憶體超級小,因為判斷64位二進位制long中第n位為1表示n這個數字存在,為0表示不存在。所以乙個long可以表示2^63 -1個數字的存在情況。

使用場景,如手機號重複校驗,數字id重複校驗,qq號重複校驗等大量防重的場景。

存在與否是精確的,說不存在絕對不存在,說存在絕對存在,不像布隆過濾器。

1.bitset的內部實現是long陣列,因為乙個long位數不夠表示時,會擴充套件到多個long

2.set中每乙個位的預設值為false(0)

3.bitset長度按需增長

4.bitset非執行緒安全

public

static

void

bitsetdemo()

bitset bs2 =

newbitset()

; bs2.

set(1)

; bs2.

set(2)

; bs2.

set(6)

; system.out.

println

(bs2.

tostring()

);////取交集,兩者都有的才保留

bs.and(bs2)

; system.out.

println

(bs.

tostring()

);////取並集,把兩者所有的都保留

bs.or(bs2)

; system.out.

println

(bs.

tostring()

);//}

C 實現計算乙個檔案的16位校驗和

1 問題敘述 編寫乙個電腦程式用來計算乙個檔案的 16 位校驗和。最快速的方法是用乙個 32 位的整數來存放這個和。記住要處理進製 例如,超過 16 位的那些位 把它們加到校驗和中。要求 1 以命令列形式執行 check sum infile 其中 check sum 為程式名,infile 為輸入...

set集合(set是乙個無序且不重複的元素集合)

功能 一 可以去掉列表,元組中的重複項 二 可以求交集,合集,差集等 def add self,args,kwargs 新增 s1 1,2,3,4,2,3,1 s3 set s1 s4 s3.add 5 print s1 print s3 print s4 1,2,3,4,2,3,1 none de...

求集合中選乙個數與當前值進行位運算的max

這是乙個聽來的神仙東西。先確定一下值域把,大概 2 再大點也可以,但是這裡就只是寫寫,所以無所謂啦。我們先看看如果暴力求怎麼做,位運算需要給定 01 10,00,11 的關係,總共 8 種。如果是暴力的話,我們的方法有兩種,第一種是比較喜聞樂見的,我們對於當前數 x 暴力計算所有存在的數 a i 中...