位集合类BitSet
位集合类中封装了有关一组二进制数据的操作。
我们先来看一下例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的更多相关文章
- 黑科技--位集--bitset
自从上次网赛发现这么个东西之后,深深地感受到了bitset的强大,0.0. 正常的bool占用1字节空间,bitset可以把这个缩到1bit,空间上8倍优化.正常用起来可能会跟位运算状态压缩类似,但是 ...
- poj3748 位运算 bitset
位操作 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9064 Accepted: 3626 Description 假 ...
- 很重要的C++的位运算bitset
本文摘录于柳神笔记: bitset ⽤来处理⼆进制位⾮常⽅便.头⽂件是 #include , bitset 可能在PAT.蓝桥OJ中不常 ⽤,但是在LeetCode OJ中经常⽤到-⽽且知道 bits ...
- java util包概述
util是utiliy的缩写,意为多用途的,工具性质的包这个包中主要存放了:集合类(如ArrayList,HashMap等),随机数产生类,属性文件读取类,定时器类等类.这些类极大方便了Java编程, ...
- java.util包详解
介绍Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结 ...
- [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 ...
- 把《c++ primer》读薄(3-3 标准库bitset类型)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. //开头 #include <bitset> using std::bitset; 问题1.标准库bitset类型( ...
- Bitset 用法(STL)
std::bitset是STL的一个模板类,它的参数是整形的数值,使用位的方式和数组区别不大,相当于只能存一个位的数组.下面看一个例子 bitset<20> b1(5); cout< ...
- bitset常用函数用法记录 (转载)
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值.位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法.标准库提供了bitset类使得处理位集合更容易一些.要使 ...
随机推荐
- Node.js mimimn图片批量下载爬虫 1.00
这个爬虫在Referer设置上和其它爬虫相比有特殊性.代码: //====================================================== // mimimn图片批 ...
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-为什么无法打开官方范例的项目,打开tszip文件时提示尝试越过结尾怎么办
打开新的解决方案,找到tszip文件 提示错误Advanced Setting时越过结尾 到这里一般VS会卡死 但是我们已经可以得到解压出来的文件夹,其中包含PLC的完整项目文件夹,可以新 ...
- 从word中导出图片
想把word里面的图片导出来,可以这么操作: 1.右键word里面的图片,复制 2.打开电脑的画图工具,粘贴,然后保存
- Cocos2d-x设置吞没单击属性来避免精灵重叠被点击后的事件续传
代码如下: Size visibleSize = Director::getInstance()->getVisibleSize(); /* create two sprites which h ...
- Hibernate关系映射(注解)
1.类级别注解 @Entity 映射实体类 @Table 映射数句库表 @Entity(name="tableName") - 必须,注解将一个类声明为一个实体bea ...
- HTTP缓存策略 304
1.图解缓存 示例: 200 (from disk cache): 200 (from memory cache) MemoryCache顾名思义,就是将资源缓存到内存中,等待下次访问时不需要重新下载 ...
- 关于bitmap recycle trying to use a recycled bitmap android.graphics.Bitmap
在开发中,一直使用4.0以上手机作为測试机所以一直没有出现这个问题,今天换了2.3版本号的手机.出现了这个错误: trying to use a recycled bitmap android.gra ...
- [Exception Spring 1] - Attribute value must not be null
java.lang.IllegalArgumentException: Attribute value must not be null at org.springframework.util.Ass ...
- Android ANR发生原因总结
ANR(Application Not Responding) Android系统中应用无响应 是Android系统中比较常见的问题,当出现ANR时一般情况会弹出一个带有以下文字的对话框提示: Act ...
- CSS-常用媒体查询
width:视口宽度.height:视口高度.device-width:渲染表面的宽度(对我们来说,就是设备屏幕的宽度).device-height:渲染表面的高度(对我们来说,就是设备屏幕的高度). ...