java資料結構之Bitset

2021-08-17 13:17:55 字數 1952 閱讀 5501

這是一種位集合,操作一組布林值的時候可以通過(或or,與and,異或xor)等方法快速改變其組內某一部分值

bitset bits1 = new bitset(10);

bitset bits2 = new bitset(10);

for(int i=1;i<21;i++)

if(i%3==0)

else

continue;

}首先對兩個bitset變數賦值結果為

bits1.xor(bits2);

system.out.println("兩集合異或:"+bits1);

兩集合異或:,呼叫的是bits1的方法,這是bits1目前的值,bits2仍為原陣列

bits1.and(bits2);

system.out.println("兩集合並:"+bits1);

結果:兩集合並:

注意:呼叫的一直是bits1內的方法,bits2的值一直保持為

bits1.cardinality( )此方法是判斷集合內設定為true的個數

system.out.println("設定為true的位數:"+bits1.cardinality( ));

結果為(        設定為true的位數:3       )

重點:這裡有乙個重點需要先知道,bitset集合所顯示出來的數字都是被設定為true的,比如集合相當於其有這幾個元素,分別對應只有為true的地方才會被顯示出來,所以集合的長度實際為7

bits1.clear(15);//引數為要刪除的集合裡的某個數值,(並非該位的值為15,可將其當作序號理解,第15位值有true變為false)

system.out.println("清除值為15後:"+bits1);

清除值為15後:

將集合裡所有元素清除

集合中無該引數,則新增入集合,有該引數則從集合中刪除

bits2.flip(1,4);/*將【min,max)範圍內有該元素的刪除,無的加入;(相當於非)

文件寫其作用是清除下標【min,max)中的元素,不過測試了輸出結果並沒有出現該作用,這個問題待解決

bits1.equals(bits2);//判斷兩集合是否相等,是為true,不等為false

bits2.get(3); //判斷集合內是否有該引數,返回值為boolean型,即判斷第三位的值是否被設定為true,集合內是否出現

bits2.get(1,15));/*get(min,max)返回【min,max)內的乙個新集合,集合為原集合在該範圍內的元素分別減1,                                              如原集合,返回*/

bits2.hashcode();//返回雜湊值

bits1.intersects(bits2));//判斷兩個集合是否有某元素相同,即有同乙個位被設定為true

bits1.isempty();//集合是否為空,為空則true

bits1.length();//返回該集合最大值加1,如,最大為6,返回7

(這個length()方法可以結合上面提到的重點理解)

bits1.nextclearbit(9));/*返回從該引數開始的集合中,值為false的下乙個元素,如集合,bits1.nextclearbit(1),則返回1,bits1.nextclearbit(6),則返回7*/

bits1.set('0');  //加入ascll碼,集合會將其顯示為48

bits1.set(1,5);//將範圍【1,5)設定為true

最後乙個是bits1.clone()轉殖方法,文件說是返回與之相同的乙個集合

但bitset b1 = new bitset();

b1 = bits1.clone();

會編譯錯誤,此處求大神指教

建議用bitset b1 = new bitset();

b1 = bits1; 代替clone()方法

Java 資料結構 Bitset類

乙個bitset類建立一種特殊型別的陣列來儲存位值。bitset中陣列大小會隨需要增加。這和位向量 vector of bits 比較類似。這是乙個傳統的類.public static void main string args system.out.println initial pattern ...

資料結構 位集合 bitset

位集合 bitset 用來方便地管理一系列的bit位,其只能儲存值為0或1,true或false的值。該類模擬乙個bool元素陣列,但針對空間分配進行了優化,通常每個元素只占用乙個位。在位集合中,每個位位置都可以單獨訪問,例如,對於乙個名為foo的給定位集合,表示式foo 3 訪問其第四位,就像正則...

JAVA之資料結構

知識點總結 一 陣列 宣告 object arr new object 長度 object arr object arr new object 賦值 arr 下標 值 獲取陣列長度 arr 下標 值 取值 arr 下標 普通for迴圈遍歷for int i 0 i二 集合 特點 可變長度。colle...