Java Bitset類

2019-01-16 17:00 更新

Java Bitset類

一個(gè)Bitset類創(chuàng)建一種特殊類型的數(shù)組來保存位值。BitSet中數(shù)組大小會(huì)隨需要增加。這和位向量(vector of bits)比較類似。

這是一個(gè)傳統(tǒng)的類,但它在Java 2中被完全重新設(shè)計(jì)。

BitSet定義了兩個(gè)構(gòu)造方法。

第一個(gè)構(gòu)造方法創(chuàng)建一個(gè)默認(rèn)的對(duì)象:

BitSet()

第二個(gè)方法允許用戶指定初始大小。所有位初始化為0。

BitSet(int size)

BitSet中實(shí)現(xiàn)了Cloneable接口中定義的方法如下表所列:

序號(hào) 方法描述
1 void and(BitSet bitSet)
對(duì)此目標(biāo)位 set 和參數(shù)位 set 執(zhí)行邏輯與操作。
2 void andNot(BitSet bitSet)
清除此 BitSet 中所有的位,其相應(yīng)的位在指定的 BitSet 中已設(shè)置。
3 int cardinality( )
返回此 BitSet 中設(shè)置為 true 的位數(shù)。
4 void clear( )
將此 BitSet 中的所有位設(shè)置為 false。
5 void clear(int index)
將索引指定處的位設(shè)置為 false。
6 void clear(int startIndex, int endIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內(nèi)的位設(shè)置為 false。
7 Object clone( )
復(fù)制此 BitSet,生成一個(gè)與之相等的新 BitSet。
8 boolean equals(Object bitSet)
將此對(duì)象與指定的對(duì)象進(jìn)行比較。
9 void flip(int index)
將指定索引處的位設(shè)置為其當(dāng)前值的補(bǔ)碼。
10 void flip(int startIndex, int endIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內(nèi)的每個(gè)位設(shè)置為其當(dāng)前值的補(bǔ)碼。
11 boolean get(int index)
返回指定索引處的位值。
12 BitSet get(int startIndex, int endIndex)
返回一個(gè)新的 BitSet,它由此 BitSet 中從 fromIndex(包括)到 toIndex(不包括)范圍內(nèi)的位組成。
13 int hashCode( )
返回此位 set 的哈希碼值。
14 boolean intersects(BitSet bitSet)
如果指定的 BitSet 中有設(shè)置為 true 的位,并且在此 BitSet 中也將其設(shè)置為 true,則返回 ture。
15 boolean isEmpty( )
如果此 BitSet 中沒有包含任何設(shè)置為 true 的位,則返回 ture。
16 int length( )
返回此 BitSet 的"邏輯大小":BitSet 中最高設(shè)置位的索引加 1。
17 int nextClearBit(int startIndex)
返回第一個(gè)設(shè)置為 false 的位的索引,這發(fā)生在指定的起始索引或之后的索引上。
18 int nextSetBit(int startIndex)
返回第一個(gè)設(shè)置為 true 的位的索引,這發(fā)生在指定的起始索引或之后的索引上。
19 void or(BitSet bitSet)
對(duì)此位 set 和位 set 參數(shù)執(zhí)行邏輯或操作。
20 void set(int index)
將指定索引處的位設(shè)置為 true。
21 void set(int index, boolean v)
 將指定索引處的位設(shè)置為指定的值。
22 void set(int startIndex, int endIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內(nèi)的位設(shè)置為 true。
23 void set(int startIndex, int endIndex, boolean v)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)范圍內(nèi)的位設(shè)置為指定的值。
24 int size( )
返回此 BitSet 表示位值時(shí)實(shí)際使用空間的位數(shù)。
25 String toString( )
返回此位 set 的字符串表示形式。
26 void xor(BitSet bitSet)
對(duì)此位 set 和位 set 參數(shù)執(zhí)行邏輯異或操作。

實(shí)例

下面的程序說明這個(gè)數(shù)據(jù)結(jié)構(gòu)支持的幾個(gè)方法:

import java.util.BitSet;

public class BitSetDemo {

  public static void main(String args[]) {
     BitSet bits1 = new BitSet(16);
     BitSet bits2 = new BitSet(16);
      
     // set some bits
     for(int i=0; i<16; i++) {         if((i%2) == 0) bits1.set(i);         if((i%5) != 0) bits2.set(i);      }      System.out.println("Initial pattern in bits1: ");      System.out.println(bits1);      System.out.println("\nInitial pattern in bits2: ");      System.out.println(bits2);       // AND bits      bits2.and(bits1);      System.out.println("\nbits2 AND bits1: ");      System.out.println(bits2);       // OR bits      bits2.or(bits1);      System.out.println("\nbits2 OR bits1: ");      System.out.println(bits2);       // XOR bits      bits2.xor(bits1);      System.out.println("\nbits2 XOR bits1: ");      System.out.println(bits2);   } } 

以上實(shí)例編譯運(yùn)行結(jié)果如下:

Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}

Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}

bits2 AND bits1:
{2, 4, 6, 8, 12, 14}

bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}

bits2 XOR bits1:
{}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)