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

我们先来看一下例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. ios开发杂项(基础性介绍等)

    IOS Xcode开发中的文件后缀名区别m,mm,cpp,h .h :头文件.头文件包含类,类型,函数和常数的声明. .m :源代码文件.这是典型的源代码文件扩展名,可以包含Objective-C和C ...

  2. javaweb开发所需的技术需求

    本文仅为新手想学习javaWeb的提供一些参考,有不足或错误之处可以修改或添加,另希望以后学习者可以同样将自己的心得发来和大家分享...谢谢 1 前台:html,css,javascript  这是最 ...

  3. Orange的数据挖掘工具入门使用

    Orange的数据挖掘工具入门使用 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitpeach ...

  4. ES6 Promise catch

    getJSON方法返回一个 Promise 对象,如果该对象状态变为resolved,则会调用then方法指定的回调函数:如果异步操作抛出错误,状态就会变为rejected,就会调用catch方法指定 ...

  5. 【Python 数据分析】从Mysql数据库取出数据作图分析

    在之前的文章中[爬取天气信息]我们已经将昆明二月份的气温爬取到数据库了,那么现在我们需要对这些数据进行一些分析操作,下面是使用matplotlib对这些数据的一些操作 折线图 首先我们读取数据库中的数 ...

  6. 在做和sap系统集成的一点心得

    最这一个月和sap做集成,把主数据中的数据写入到sap系统中,做集成就离不开联调,平时开发中,一个复杂点的系统还容易出问题,涉及到两个系统,由于两个或多个系统来自不同的厂家,各个厂家的开发对业务的理解 ...

  7. WCF公开服务元数据方式

    一般我们使用了scvutil命令自动生成了服务的客户端代理类: 例如:svcutil http://localhost:8000/?wsdl /o:FirstServiceClient.cs 命令中h ...

  8. signed distance field 算法

    将二值图转化成signed distance field后,可以在双线性插值下实现平滑放大. 定义: 到前景的distance field:各点到最近前景点的距离. 到背景的distance fiel ...

  9. GitHub的Fork 是什么意思

    现在有这样一种情形: 有一个叫做Joe的程序猿写了一个游戏程序,而你可能要去改进它.并且Joe将他的代码放在了GitHub仓库上. 下面是你要做的事情 fork并且更新GitHub仓库的图表演示 Fo ...

  10. [svc][jk]监控jvm的一个坑

    监控jvm的一个坑 1,遇到的问题 我按照以往文档,在catalina.sh里追加jvm的监控api,如下 紧接着我启动 tomcat. 未报任何错误. 发现 lsof –i:12000, 12000 ...