Bitset类

  Bitset类创建一种特殊类型的数组来保存位值。BitSet的数组大小会随需要增加,这和位向量(vector of bits)类似。它是一个传统的类,但在Java 2中被完全重新设计。
  BitSet定义了两个构造方法,第一个构造方法创建一个默认的对象:

BitSet()

第二个方法允许用户指定初始大小,所有位初始化为0

BitSet(int size)

  BitSet实现了Cloneable接口中定义的方法:

  • void and(BitSet set):对此目标位和参数位set执行逻辑与操作。
  • void andNot(BitSet set):清除此BitSet中所有的位,其相应的位在指定的BitSet中设置。
  • int cardinality():返回此BitSet中设置为true的位数。
  • void clear():将此BitSet中的所有位设置为false
  • void clear(int index):将索引指定处的位设置为false
  • void clear(int startIndex, int endIndex):将指定的fromIndex(包括)到指定的toIndex(不包括)范围内的位设置为false
  • Object clone():复制此BitSet,生成一个与之相等的新BitSet
  • boolean equals(Object bitSet):将此对象与指定的对象进行比较。
  • void flip(int index):将指定索引处的位设置为其当前值的补码。
  • void flip(int startIndex, int endIndex):将指定的fromIndex(包括)到指定的toIndex(不包括)范围内的每个位设置为其当前值的补码。
  • boolean get(int index):返回指定索引处的位值。
  • BitSet get(int startIndex, int endIndex):返回一个新的BitSet,它由此BitSet中从fromIndex(包括)到toIndex(不包括)范围内的位组成。
  • int hashCode():返回此位set的哈希码值。
  • boolean intersects(BitSet bitSet):如果指定的BitSet中有设置为true的位,并且在此BitSet中也将其设置为true,则返回ture
  • boolean isEmpty():如果此BitSet中没有包含任何设置为true的位,则返回ture
  • int length():返回此BitSet逻辑大小,即BitSet中最高设置位的索引加1
  • int nextClearBit(int startIndex):返回第一个设置为false的位的索引,这发生在指定的起始索引或之后的索引上。
  • int nextSetBit(int startIndex):返回第一个设置为true的位的索引,这发生在指定的起始索引或之后的索引上。
  • void or(BitSet bitSet):对此位set和参数位set执行逻辑或操作。
  • void set(int index):将指定索引处的位设置为true
  • void set(int index, boolean v):将指定索引处的位设置为指定的值。
  • void set(int startIndex, int endIndex):将指定的fromIndex(包括)到指定的toIndex(不包括)范围内的位设置为true
  • void set(int startIndex, int endIndex, boolean v):将指定的fromIndex(包括)到指定的toIndex(不包括)范围内的位设置为指定的值。
  • int size():返回此BitSet表示位值时实际使用空间的位数。
  • String toString():返回此位set的字符串表示形式。
  • void xor(BitSet bitSet):对此位set和参数位set执行逻辑异或操作。
import java.util.BitSet;

public class BitSetDemo {
    public static void main(String args[]) {
        BitSet bits1 = new BitSet(16);
        BitSet bits2 = new BitSet(16);

        for (int i = 0; i < 16; i++) { /* set some bits */
            if ((i % 2) == 0) bits1.set(i);
            if ((i % 5) != 0) bits2.set(i);
        }

        System.out.print("Initial pattern in bits1: ");
        System.out.println(bits1);
        System.out.print("Initial pattern in bits2: ");
        System.out.println(bits2);

        bits2.and(bits1); /* AND bits */
        System.out.print("bits2 AND bits1: ");
        System.out.println(bits2);

        bits2.or(bits1); /* OR bits */
        System.out.print("bits2 OR bits1: ");
        System.out.println(bits2);

        bits2.xor(bits1); /* XOR bits */
        System.out.print("bits2 XOR bits1: ");
        System.out.println(bits2);
    }
}

执行结果:

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: {}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值