该类实现了需要增长的位向量。
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)
将该位集对象与参数位集按位异或

示例:

  1. // Java Program to Print VeryLarge Bunch of Numbers
  2. // Importing input output classes
  3. import java.io.*;
  4. import java.util.*;
  5. // Main class
  6. public class Main {
  7. // Main driver method
  8. public static void main(String[] args)
  9. {
  10. BitSet bs = new BitSet(100);
  11. BitSet bs2 = new BitSet();
  12. bs2.set(2);
  13. bs.set(1);
  14. bs.set(50);
  15. System.out.println(bs);
  16. System.out.println(bs.length());
  17. System.out.println(bs.cardinality());
  18. System.out.println(bs.intersects(bs2));
  19. bs.andNot(bs2);
  20. System.out.println(bs);
  21. System.out.println(bs2.size());
  22. bs.clear();
  23. bs.set(2);
  24. System.out.println(bs.size());
  25. System.out.println(bs.equals(bs2));
  26. bs.flip(0, 2);
  27. System.out.println(bs);
  28. bs.clear();
  29. System.out.println(bs.isEmpty());
  30. }
  31. }
  1. // 输出
  2. {1, 50}
  3. 51
  4. 2
  5. false
  6. {1, 50}
  7. 64
  8. 128
  9. true
  10. {0, 1, 2}
  11. true