java Bitset类

一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。这和位向量(vector of bits)比较类似。

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);//将bits1中能被2整除的位置为true
        if((i%5) != 0) bits2.set(i);//将bits2中能被5整除的位置为true
     }
     System.out.println("返回bits1中值为true的位: ");
     System.out.println(bits1);
     System.out.println("\n返回bits2中值为true的位: ");
     System.out.println(bits2);
 
     bits1.set(10,false);
     System.out.println("\n将bits1第10位设置为false: ");
     System.out.println(bits1);
     
     bits1.set(10,14);
     System.out.println("\n将bits1第10位至14位设置为true: ");
     System.out.println(bits1);
     
     bits1.set(12,15,false);
     System.out.println("\n将bits1中第12位至15位设置为false: ");
     System.out.println(bits1);
     
     bits2.and(bits1);
     System.out.println("\n将bits2和bits1进行逻辑与操作: ");
     System.out.println(bits2);
 
     bits2.or(bits1);
     System.out.println("\n将bits2和bits1进行逻辑或操作: ");
     System.out.println(bits2);
 
     bits2.xor(bits1);
     System.out.println("\n将bits2和bits1进行逻辑异或操作: ");
     System.out.println(bits2);
     
     bits1.cardinality();
     System.out.println("\n返bits1中设置为true的位数: ");
     System.out.println(bits1);
     
     bits1.clear(2);
     System.out.println("\n将bits1第2位设置为false: ");
     System.out.println(bits1);
     
     bits1.clear(4,10);
     System.out.println("\n将bits1第4位到第10位设置为false: ");
     System.out.println(bits1);
     
     System.out.println("\n将bits1复制: ");
     System.out.println(bits1.clone());
     
     System.out.println("\n将bits1与bits2比较,相等则返回true: ");
     System.out.println(bits1.equals(bits2));
     
     bits1.flip(1);
     System.out.println("\n将bits1第1位设置为其补码: ");
     System.out.println(bits1);
     
     bits1.flip(1,5);
     System.out.println("\n将bits1第1至5位设置为其补码: ");
     System.out.println(bits1);
     
     System.out.println("\n返回bits1第1位的值: ");
     System.out.println(bits1.get(1));
     
     System.out.println("\n返回bits1的哈希码值: ");
     System.out.println(bits1.hashCode());
     
     System.out.println("\n如果bits2中有设置为true的值,且bits1中该位也为true,则返回true: ");
     System.out.println(bits1.intersects(bits2));
     
     System.out.println("\n如果bits1没有任何位被设置为true,则返回true: ");
     System.out.println(bits1.isEmpty());
     
     System.out.println("\n返回bits1的长度: ");
     System.out.println(bits1.length());
     
     System.out.println("\n返回bits1的实际使用空间位数: ");
     System.out.println(bits1.size());
     
     System.out.println("\n返回bits1第1个被设置为false的位: ");
     System.out.println(bits1.nextClearBit(1));
     
     System.out.println("\n返回bits1第1个被设置为true的值: ");
     System.out.println(bits1.nextSetBit(4));
     
     System.out.println("\n返回bits1的字符串表示形式: ");
     System.out.println(bits1.toString());
     
     bits1.clear();
     System.out.println("\n将bits1的所有位设置为false: ");
     System.out.println(bits1);
  }
}

编译并运行,结果如下

返回bits1中值为true的位: 
{0, 2, 4, 6, 8, 10, 12, 14}

返回bits2中值为true的位: 
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}

将bits1第10位设置为false: 
{0, 2, 4, 6, 8, 12, 14}

将bits1第10位至14位设置为true: 
{0, 2, 4, 6, 8, 10, 11, 12, 13, 14}

将bits1中第12位至15位设置为false: 
{0, 2, 4, 6, 8, 10, 11}

将bits2和bits1进行逻辑与操作: 
{2, 4, 6, 8, 11}

将bits2和bits1进行逻辑或操作: 
{0, 2, 4, 6, 8, 10, 11}

将bits2和bits1进行逻辑异或操作: 
{}

返bits1中设置为true的位数: 
{0, 2, 4, 6, 8, 10, 11}

将bits1第2位设置为false: 
{0, 4, 6, 8, 10, 11}

将bits1第4位到第10位设置为false: 
{0, 10, 11}

将bits1复制: 
{0, 10, 11}

将bits1与bits2比较,相等则返回true: 
false

将bits1第1位设置为其补码: 
{0, 1, 10, 11}

将bits1第1至5位设置为其补码: 
{0, 2, 3, 4, 10, 11}

返回bits1第1位的值: 
false

返回bits1的哈希码值: 
2255

如果bits2中有设置为true的值,且bits1中该位也为true,则返回true: 
false

如果bits1没有任何位被设置为true,则返回true: 
false

返回bits1的长度: 
12

返回bits1的实际使用空间位数: 
64

返回bits1第1个被设置为false的位: 
1

返回bits1第1个被设置为true的值: 
4

返回bits1的字符串表示形式: 
{0, 2, 3, 4, 10, 11}

将bits1的所有位设置为false: 
{}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值