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

我们先来看一下例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. isset() unset()

    检测变量是否设置,并且不是 NULL. 如果已经使用 unset() 释放了一个变量之后,它将不再是 isset().若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE. ...

  2. WCF 之 初识WCF

    在编程中服务的作用越来越大了,.net从2.0的 webservice,到3.5之后的WCF,服务的功能越来越强了.现在先从简单的看起,先看看WCF服务的发布. 现在来看看一步一步发布 WCF 服务. ...

  3. 4CIF是什么意思

    QCIF:176X144 CIF:352X288 2CIF:704X288 DCIF:584X384 4CIF:704X576 CIF是常用的标准化图像格式(Common Intermediate F ...

  4. 解决RegexKitLite编译报错

    原地址:http://blog.csdn.net/kepoon/article/details/7586861 在编译RegexKitLite的时候,报错如下: Undefined symbols f ...

  5. 软件测试中LoadRunner函数中的几个陷阱

    软件测试 中 LoadRunner 函数中的几个陷阱 1.atof 在 loadrunner 中如果直接用 float f; f=atof("123.00"); lr _outpu ...

  6. Java之内部类(1) - 为什么需要内部类

    为什么需要内部类 一般来说,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类的对象.所以可以认为内部类提供了某种进入其外围类的窗口. 内部类必须要回答的一个问题是:如果只是需要一个对接 ...

  7. android源代码分析 android toast使用具体解释 toast自己定义

    在安卓开发过程中.toast使我们常常使用的一个类.当我们须要向用户传达一些信息,可是不须要和用户交互时,该方式就是一种十分恰当的途径. 我们习惯了这样使用toast:Toast.makeText(C ...

  8. jconsole JDK1.6 使用手册 (转)

    转载出处 文章作者:hornet 本文地址:http://hornetblog.sinaapp.com/?p=5 英文版地址: http://download.oracle.com/javase/6/ ...

  9. iOS百度地图

    一.百度地图sdk具体使用过程,參考以下的博客(我感觉非常具体.并且有问题能够找楼主.他会给解答,感谢好心人-): 怎样使用百度地图sdk,及相关demo下载 上述博客给的demo,是真机执行的(百度 ...

  10. sql server 数据加密

    select EncryptByPassPhrase('hksjlm',qlrmc)jmsj,* into jmqlr from qlr where qlbh in('5201411120005',' ...