位集合类中封装了有关一组二进制数据的操作。

我们先来看一下例8.6 BitSetApp.java。

例8.6 BitSetApp.java

//import java.lang.*;

import java.util.BitSet;

public class BitSetApp{

private static int n=5;

public static void main(String[] args){

BitSet set1=new BitSet(n);

for(int i=0;i<N;I++)&NBSP;SET1.SET(I);

//将set1的各位赋1,即各位均为true

BitSet set2= new BitSet();

set2=(BitSet)set1.clone();

//set2为set1的拷贝

set1.clear(0);

set2.clear(2);

//将set1的第0位set2的第2位清零

System.out.println("The set1 is: "+set1);

//直接将set1转换成字符串输出,输出的内容是set1中值true所处的位置

//打印结果为The set1 is:{1,2,3,4}

System.out.println("The hash code of set2 is: "+set2.hashCode());

//打印set2的hashCode

printbit("set1",set1);

printbit("set2",set2);

//调用打印程序printbit(),打印对象中的每一个元素

//打印set1的结果为The bit set1 is: false true true true true

set1.and(set2);

printbit("set1 and set2",set1);

//完成set1 and set2,并打印结果

set1.or(set2);

printbit("set1 or set2",set1);

//完成set1 or set2,并打印结果

set1.xor(set2);

printbit("set1 xor set2",set1);

//完成set1 xor set2,并打印结果

}

//打印BitSet对象中的内容

public static void printbit(String name,BitSet set){

System.out.print("The bit "+name+" is: ");

for(int i=0;i<N;I++)

System.out.print(set.get(i)+" ");

System.out.println();

}

}

运行结果:

The set1 is: {1, 2, 3, 4}

The hash code of set2 is: 1225

The bit set1 is: false true true true true

The bit set2 is: true true false true true

The bit set1 and set2 is: false true false true true

The bit set1 or set2 is: true true false true true

The bit set1 xor set2 is: false false false false false

程序中使用了BitSet类提供的两种构造方法:

public BitSet();

public BitSet(int n);

参数n代表所创建的BitSet类的对象的大小。BitSet类的对象的大小在必要时会由系统自动扩充。

其它方法:

public void set(int n)

将BitSet对象的第n位设置成1。

public void clear(int n)

将BitSet对象的第n位清零。

public boolean get(int n)

读取位集合对象的第n位的值,它获取的是一个布尔值。当第n位为1时,返回true;第n位为0时,返回false。

另外,如在程序中所示,当把一BitSet类的对象转换成字符串输出时,输出的内容是此对象中true所处的位置。

在BitSet中提供了一组位操作,分别是:

public void and(BitSet set)

public void or(BitSet set)

public void xor(BitSet set)

利用它们可以完成两个位集合之间的与、或、异或操作。

BitSet类中有一方法public int size()来取得位集合的大小,它的返回值与初始化时设定的位集合大小n不一样,一般为64。

位集合类BitSet的更多相关文章

  1. 黑科技--位集--bitset

    自从上次网赛发现这么个东西之后,深深地感受到了bitset的强大,0.0. 正常的bool占用1字节空间,bitset可以把这个缩到1bit,空间上8倍优化.正常用起来可能会跟位运算状态压缩类似,但是 ...

  2. poj3748 位运算 bitset

    位操作 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9064   Accepted: 3626 Description 假 ...

  3. 很重要的C++的位运算bitset

    本文摘录于柳神笔记: bitset ⽤来处理⼆进制位⾮常⽅便.头⽂件是 #include , bitset 可能在PAT.蓝桥OJ中不常 ⽤,但是在LeetCode OJ中经常⽤到-⽽且知道 bits ...

  4. java util包概述

    util是utiliy的缩写,意为多用途的,工具性质的包这个包中主要存放了:集合类(如ArrayList,HashMap等),随机数产生类,属性文件读取类,定时器类等类.这些类极大方便了Java编程, ...

  5. java.util包详解

    介绍Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结 ...

  6. [BZOJ5109][LOJ #6252][P4061][CodePlus 2017 11月赛]大吉大利,今晚吃鸡!(最短路+拓扑排序+传递闭包+map+bitset(hash+压位))

    5109: [CodePlus 2017]大吉大利,晚上吃鸡! Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 107  Solved: 57[Sub ...

  7. 把《c++ primer》读薄(3-3 标准库bitset类型)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. //开头 #include <bitset> using std::bitset; 问题1.标准库bitset类型( ...

  8. Bitset 用法(STL)

    std::bitset是STL的一个模板类,它的参数是整形的数值,使用位的方式和数组区别不大,相当于只能存一个位的数组.下面看一个例子 bitset<20> b1(5); cout< ...

  9. bitset常用函数用法记录 (转载)

    有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值.位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法.标准库提供了bitset类使得处理位集合更容易一些.要使 ...

随机推荐

  1. C#秘密武器之异步编程

    一.概述 1.什么是异步? 异步操作通常用于执行完成时间可能较长的任务,如打开大文件.连接远程计算机或查询数据库.异步操作在主应用程序线程以外的线程中执行.应用程序调用方法异步执行某个操作时,应用程序 ...

  2. 基于mybatis-generator代码生成工具改(链式方法实体版)

    概述 一直以来使用原生mybatis-generator的我发现有一个地方很不方便,即它生成的实体类的set方法返回值是void,而目前比较流行的则是链式set的写法,即set方法返回值不再是void ...

  3. Js实现AES/RSA加密

    1. function aesEncrypt(text, secKey) { var key = CryptoJS.enc.Utf8.parse(secKey); var iv = CryptoJS. ...

  4. centos 基础环境配置

    1,安装EPEL的yum源 EPEL 是 Extra Packages for Enterprise Linux 的缩写(EPEL),是用于 Fedora-based Red Hat Enterpri ...

  5. 使用typescript开发js代码提升代码维护性

    function test() { var gs = new Greeter('ss'); alert( gs.greet()); } window.onload = test; class Gree ...

  6. ext4文件系统(转)

    [ext4]01 磁盘布局 - block分析 [ext4]02磁盘布局 - group分析 [ext4]03 磁盘布局 – Flexible group分析 [ext4]04 磁盘布局 - Meta ...

  7. Visual Prolog 的 Web 专家系统 (1)

    用Prolog敲代码,感觉舒坦. Prolog的编程范式,抽象程度远高于中.低级别的C语言等.敲代码的源码长度,至少比C语言的节省50%. 并且,Prolog的语法简单,符号选择自然合理,养眼度远高于 ...

  8. macbook的终端中使用gnu的ls命令

    1.首先,我用的是iterm2终端.方法是:到iterm2.com中下载后,复制到applications文件夹下,就可以了. 2.其次,mac下的ls不是gnu的ls,两者是有区别的,看来开源世界还 ...

  9. 关于阿里云ECS Centos 5/6/7 Linux Glibc库严重安全漏洞修复方法

    日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235.黑客可以通过gethostbyname系列函数实现远程代码执行,获取 ...

  10. thread_CountDownLatch同步计数器

    CountDownLatch类是一个同步计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞程序继续执行 ...