1.構造方法和彙總統計方法
public static void main(String[] args) {
java.util.BitSet bitSet = new BitSet();
System.out.println(bitSet.size()); // 64
bitSet.set(9);
System.out.println(bitSet.length()); // 9+1=10
java.util.BitSet bitSetNbit = new BitSet(1024);
System.out.println(bitSetNbit.size()); // 1024
System.out.println(bitSetNbit.length()); // 0
System.out.println(bitSet.isEmpty()); // true
}
1.1 構造方法
public BitSet()
建立一個新的 BitSet: 全部的位初始均爲 false/0。
public BitSet(int nbits)
建立一個 BitSet,初始大小足以顯式表示索引範圍在 0 到 nbits-1 的位。
全部的位初始均爲 false/0
1.2 彙總統計
size
length
isEmpty
cardinality
int size()
返回此 BitSet 實際使用空間的位數:nbits
int length()
返回此 BitSet 的"true"的位數:BitSet 中最高設置位的索引加 1。
boolean isEmpty()
若是此 BitSet 中沒有包含任何設置爲 true 的位,則返回 ture。
int cardinality()
返回此 BitSet 中設置爲 true 的位數。
2. 增刪改查
2.1 增-set
public static void main(String[] args) {
BitSet bitSet = new BitSet(1024);
bitSet.set(0); // 索引0的bit位, 設置 true :[0]=1
bitSet.set(2); // 索引2的bit位, 設置 true :[2]=1
bitSet.set(4, true); // 同上,索引 4 = true :[4]=1
bitSet.set(5, 7); // [5, 7) 設置 true [5] = 1; [6] = 1
bitSet.set(11, 12, false); // 索引區間[11, 12)置 false: [11] = false
// `toString` 輸出索引位爲 true 的元素的索引列表; 注意是{}不是[]
System.out.println(bitSet.toString()); // {0, 2, 4, 5, 6}
// `size` 初始化的總bitmap -size 的大小
System.out.println(bitSet.size()); // 1024
// `length` 注意len=7=> max(true-index + 1) ==>
// 在IO多路複用的select函數裏有與此相同的應用,
// 遍歷時, 就不用考慮[7, size()]z這些了
System.out.println(bitSet.length()); // 7
// `cardinality` true的元素的個數- true-count
System.out.println(bitSet.cardinality()); // 5
}
void set(int bitIndex)
將指定索引 bitIndex 處的位設置爲 true。
void set(int bitIndex, boolean value)
將指定索引 bitIndex 處的位設置爲指定的值 value。
void set(int fromIndex, int toIndex)
將指定的 fromIndex(包括)到 toIndex(不包括)範圍內的位設置爲 true。
void set(int fromIndex, int toIndex, boolean value)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)範圍內的位設置爲 value。
2.2 刪-clear
public static void main(String[] args) {
BitSet bitSet = new BitSet(1024);
bitSet.set(0); // 索引0的bit位, 設置 true :[0]=1
bitSet.set(2); // 索引2的bit位, 設置 true :[2]=1
bitSet.set(4, true); // 同上,索引 4 = true :[4]=1
bitSet.set(5, 7); // [5, 7) 設置 true [5] = 1; [6] = 1
bitSet.set(11, 12, false); // 索引區間[11, 12)置 false: [11] = false
bitSet.clear(2); // [2] = false
bitSet.clear(4, 6); // [4] = false; [5] = false
// `toString` 輸出索引位爲 true 的元素的索引列表; 注意是{}不是[]
System.out.println(bitSet.toString()); // {0, 6}
// `size` 初始化的總bitmap -size 的大小
System.out.println(bitSet.size()); // 1024
// `length` 注意len=7=> max(true-index + 1) ==>
// 在IO多路複用的select函數裏有與此相同的應用,
// 遍歷時, 就不用考慮[7, size()]z這些了
System.out.println(bitSet.length()); // 7
// `cardinality` true的元素的個數- true-count
System.out.println(bitSet.cardinality()); // 2
}
void clear()
將此 BitSet 中的全部位設置爲 false。
void clear(int bitIndex)
將索引指定處的位設置爲 false。
void clear(int fromIndex, int toIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)範圍內的位設置爲 false。
2.4 改-flip
public static void main(String[] args) {
BitSet bitSet = new BitSet(1024);
bitSet.set(0); // 索引0的bit位, 設置 true :[0]=1
bitSet.set(2); // 索引2的bit位, 設置 true :[2]=1
bitSet.set(4, true); // 同上,索引 4 = true :[4]=1
bitSet.set(5, 7); // [5, 7) 設置 true [5] = 1; [6] = 1
bitSet.set(11, 12, false); // 索引區間[11, 12)置 false: [11] = false
bitSet.clear(2); // [2] = false
bitSet.flip(2); // 至關於clear的反操做
bitSet.clear(4, 6); // [4] = false; [5] = false
bitSet.flip(4, 6); // 至關於clear的反操做
// `toString` 輸出索引位爲 true 的元素的索引列表; 注意是{}不是[]
System.out.println(bitSet.toString()); // {0, 2, 4, 5, 6}
// `size` 初始化的總bitmap -size 的大小
System.out.println(bitSet.size()); // 1024
// `length` 注意len=7=> max(true-index + 1) ==>
// 在IO多路複用的select函數裏有與此相同的應用,
// 遍歷時, 就不用考慮[7, size()]z這些了
System.out.println(bitSet.length()); // 7
// `cardinality` true的元素的個數- true-count
System.out.println(bitSet.cardinality()); // 5
}
void flip(int bitIndex)
將指定索引處的位設置爲其當前值的補碼。
void flip(int fromIndex, int toIndex)
將指定的 fromIndex(包括)到指定的 toIndex(不包括)範圍內的每一個位設置爲其當前值的補碼。
2.4 查
get
nextClearBit
nextSetBit
toString
cardinality
public static void main(String[] args) {
BitSet bitSet = new BitSet(1024);
bitSet.set(0); // 索引0的bit位, 設置 true :[0]=1
bitSet.set(2); // 索引2的bit位, 設置 true :[2]=1
bitSet.set(6, true); // 同上,索引 4 = true :[4]=1
System.out.println(bitSet.nextClearBit(2)); // 3 [2]開始的第一個false的索引(包括2)=>3
System.out.println(bitSet.nextSetBit(2)); // 2 [2]開始的第一個true的索引(包括2)=>2
System.out.println(bitSet.get(2)); // true
System.out.println(bitSet.get(3)); // false
System.out.println(bitSet.get(3, 7)); // {3} 返回了一個新的BitSet, 新的索引從第一個開始[from, to)
}
int nextClearBit(int fromIndex)
返回第一個設置爲 false 的位的索引,在fromIndex起(包含)的索引上。
int nextSetBit(int fromIndex)
返回第一個設置爲 true 的位的索引,在fromIndex起(包含)的索引上。
boolean get(int bitIndex)
返回指定索引處的位值。
String toString()
返回此位 set 的字符串表示形式。
// {2, 4, 10, 99}
3. BitSet之集合操做:
與
或
非
異或
void and(BitSet set)
對此目標位 set 和參數位 set 執行邏輯與操做。
void andNot(BitSet set)
清除此 BitSet 中全部的位,其相應的位在指定的 BitSet 中已設置。
boolean intersects(BitSet set)
若是指定的 BitSet 中有設置爲 true 的位,而且在此 BitSet 中也將其設置爲 true,則返回 ture。
void or(BitSet set)
對此位 set 和位 set 參數執行邏輯或操做。
void xor(BitSet set)
對此位 set 和位 set 參數執行邏輯異或操做。
boolean equals(Object obj) // 比較兩個BitSet:裏面全部位的true比較