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

我们先来看一下例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. 通过NAT实例实现外部访问AWS的ElastiCache资源

    ElastiCache作为AWS的内存缓存组建可以说做的一点也不友好了, 你可以通过ElastiCache创建redis,memcache的实例,却不能被外部访问. 背景 人傻钱多的客户总有人傻钱多的 ...

  2. 云计算之路-阿里云上:启用Windows虚拟内存引发的CPU 100%故障

    今天上午11:35~11:40左右,由于负载均衡中的两台云服务器CPU占用突然飚至100%,造成网站5分钟左右不能正常访问,请大家带来了麻烦,请谅解! (上图中红色曲线表示CPU占用) 经过分析,我们 ...

  3. PHP实现程序单例执行

    原创文章,转载请注明出处:http://huyanping.sinaapp.com/?p=222 作者:Jenner 一.场景描写叙述: 近期我们一块业务.须要不断的监听一个文件夹的变化.假设文件夹中 ...

  4. 移动端(阿里rem)布局

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. iOS工程中的info.plist文件的完整研究

    原地址:http://blog.sina.com.cn/s/blog_947c4a9f0100zf41.html 们建立一个工程后,会在Supporting files下面看到一个"工程名- ...

  6. 网络编程-Java中的Internet查询

    前提 在深入理解URL.URI等概念,或者学些Socket相关的知识之,有必要系统理解一下Internet相关的一些基础知识. Internet地址 连接到Internet(因特网)的设备称为节点(n ...

  7. vue 仿ele 开发流程

    技术栈: vue2 vuex vue-router axios webpack eslint better-scroll 1.安装插件 npm install vue-resource babel-r ...

  8. for in 与 Object.keys 与 hasOwnProperty区别

    1.结论 for in遍历对象所有可枚举属性 包括原型链上的属性 Object.keys遍历对象所有可枚举属性 不包括原型链上的属性 hasOwnProperty 检查对象是否包含属性名,无法检查原型 ...

  9. cookie、localStorage和sessionStorage区别

    三者区别见下表: 说明: cookie的处理过程为: 服务器向客户端发送cookie 浏览器将cookie保存 之后每次http请求浏览器都会将cookie发送给服务器端 对于 cookie,我们还需 ...

  10. NET:Checkboxlist,Dropdownlist 加入ToolTip说明

    ToolTip属性: ToolTip 类 (System.Windows.Controls)‎ 表示创建弹出项的控件.该弹出项可显示界面中元素的相关信息.命名空间: System.Windows.Co ...