该类实现了需要增长的位向量。
BitSet的位由非负整数索引,可以检查,设置或者清除单独的索引位。
一个BitSet可以通过与,或,异或运算来修改另一个BitSet的内容
默认情况下,集和中的所有位初值均为false
构造方法
BitSet() 创建一个新的位集。 |
---|
BitSet(int nbits) 创建一个位集合,其初始大小足够大以显式表示具有 0到 nbits-1范围内的索引的位。 |
成员方法
void | and(BitSet set) 将该位集对象与参数位集按位与 |
---|---|
void | andNot(BitSet set) 清除该位集中所有在set中设置为1的位。 |
int | cardinality() 返回此 BitSet设置为 true的 位的数量。 |
void | clear() 将此BitSet中的所有位设置为 false 。 |
void | clear(int bitIndex) 将索引指定的位设置为 false 。 |
void | clear(int fromIndex, int toIndex) 将指定的 fromIndex (含)的位设置为 toIndex (不含)到 false 。 |
Object | clone() 克隆这个 BitSet产生一个新的 BitSet等于它。 |
boolean | equals(Object obj) 将此对象与指定对象进行比较。 |
void | flip(int bitIndex) 将指定索引处的位设置为其当前值的补码。 |
void | flip(int fromIndex, int toIndex) 将指定的每一位 fromIndex (含)到指定的 toIndex (不含)为其当前值的补码。 |
boolean | get(int bitIndex) 返回具有指定索引的位的值。 |
BitSet | get(int fromIndex, int toIndex) 返回一个新 BitSet组成位从这个 BitSet从 fromIndex (含)至 toIndex (不含)。 |
boolean | intersects(BitSet set) 如果set中设置为1的所有位在该对象中也被设置为1,返回true |
boolean | isEmpty() 如果此 BitSet不包含设置为 true 的位,则返回true,否则返回false |
int | length() 返回这个 BitSet的“逻辑大小”: 最高设置为true的位的索引 + 1(因为下标从0开始) |
int | nextClearBit(int fromIndex) 返回在指定的起始索引上或之后设置为 false的第一个位的索引。 |
int | nextSetBit(int fromIndex) 返回在指定的起始索引上或之后设置为true的第一个位的索引。 |
void | or(BitSet set) 将该位集对象与参数位集按位或 |
int | previousClearBit(int fromIndex) 返回在指定的起始索引上或之前设置为false的第一个位的索引。 |
int | previousSetBit(int fromIndex) 返回在指定的起始索引上或之前设置为true的第一个位的索引。 |
void | set(int bitIndex) 将指定索引处的位设置为 true 。 |
void | set(int bitIndex, boolean value) 将指定的索引的位设置为指定值。 |
void | set(int fromIndex, int toIndex) 将指定的 fromIndex (含)的位设置为指定的 toIndex (不含)到 true 。 |
void | set(int fromIndex, int toIndex, boolean value) 将指定的 fromIndex (含)的位设置为指定值的 toIndex (不含)。 |
int | size() 返回此 BitSet实际使用的表示位值的空间位数。 |
void | xor(BitSet set) 将该位集对象与参数位集按位异或 |
示例:
// Java Program to Print VeryLarge Bunch of Numbers
// Importing input output classes
import java.io.*;
import java.util.*;
// Main class
public class Main {
// Main driver method
public static void main(String[] args)
{
BitSet bs = new BitSet(100);
BitSet bs2 = new BitSet();
bs2.set(2);
bs.set(1);
bs.set(50);
System.out.println(bs);
System.out.println(bs.length());
System.out.println(bs.cardinality());
System.out.println(bs.intersects(bs2));
bs.andNot(bs2);
System.out.println(bs);
System.out.println(bs2.size());
bs.clear();
bs.set(2);
System.out.println(bs.size());
System.out.println(bs.equals(bs2));
bs.flip(0, 2);
System.out.println(bs);
bs.clear();
System.out.println(bs.isEmpty());
}
}
// 输出
{1, 50}
51
2
false
{1, 50}
64
128
true
{0, 1, 2}
true