C++程序员学Java系列之二九:数据结构之Bitset
来源:互联网 发布:数据库表单设计 编辑:程序博客网 时间:2024/06/05 18:47
内容参考:https://www.w3cschool.cn/java/java-bitset-class.html
Java Bitset类
一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。这和位向量(vector of bits)比较类似。
这是一个传统的类,但它在Java 2中被完全重新设计。
BitSet定义了两个构造方法。
第一个构造方法创建一个默认的对象:
BitSet()
第二个方法允许用户指定初始大小。所有位初始化为0。
BitSet(int size)
BitSet中接口中定义的方法如下表所列:
对此目标位 set 和参数位 set 执行逻辑与操作。2void andNot(BitSet bitSet)
清除此 BitSet 中所有的位,其相应的位在指定的 BitSet 中已设置。3int cardinality( )
返回此 BitSet 中设置为 true 的位数。4void clear( )
将此 BitSet 中的所有位设置为 false。5void clear(int index)
将索引指定处的位设置为 false。6void clear(int startIndex, int endIndex)
将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 false。7Object clone( )
复制此 BitSet,生成一个与之相等的新 BitSet。8boolean equals(Object bitSet)
将此对象与指定的对象进行比较。9void flip(int index)
将指定索引处的位设置为其当前值的补码。10void flip(int startIndex, int endIndex)
将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的每个位设置为其当前值的补码。11boolean get(int index)
返回指定索引处的位值。12BitSet get(int startIndex, int endIndex)
返回一个新的 BitSet,它由此 BitSet 中从 fromIndex(包括)到 toIndex(不包括)范围内的位组成。13int hashCode( )
返回此位 set 的哈希码值。14boolean intersects(BitSet bitSet)
如果指定的 BitSet 中有设置为 true 的位,并且在此 BitSet 中也将其设置为 true,则返回 ture。15boolean isEmpty( )
如果此 BitSet 中没有包含任何设置为 true 的位,则返回 ture。16int length( )
返回此 BitSet 的"逻辑大小":BitSet 中最高设置位的索引加 1。17int nextClearBit(int startIndex)
返回第一个设置为 false 的位的索引,这发生在指定的起始索引或之后的索引上。18int nextSetBit(int startIndex)
返回第一个设置为 true 的位的索引,这发生在指定的起始索引或之后的索引上。19void or(BitSet bitSet)
对此位 set 和位 set 参数执行逻辑或操作。20void set(int index)
将指定索引处的位设置为 true。21void set(int index, boolean v)
将指定索引处的位设置为指定的值。22void set(int startIndex, int endIndex)
将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 true。23void set(int startIndex, int endIndex, boolean v)
将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为指定的值。24int size( )
返回此 BitSet 表示位值时实际使用空间的位数。25String toString( )
返回此位 set 的字符串表示形式。26void xor(BitSet bitSet)
对此位 set 和位 set 参数执行逻辑异或操作。
实例
import java.util.BitSet;public class JavaTest {public static void main(String[] args) {// TODO Auto-generated method stub// 初始化其位的大小为16位,所有初始化的位为0BitSet bits1 = new BitSet(16);// 0000 0000 0000 0000BitSet bits2 = new BitSet(16);// 0000 0000 0000 0000// set some bitsfor (int i = 0; i < 16; i++) {if ((i % 2) == 0)bits1.set(i);if ((i % 5) != 0)bits2.set(i);}System.out.println("Initial pattern in bits1: ");System.out.println(bits1);// 0101 0101 0101 0101System.out.println("\nInitial pattern in bits2: ");System.out.println(bits2); // 0111 1011 1101 1110// AND bits,对应位都为1才为1bits2.and(bits1);// 0101 0101 0101 0101// 0111 1011 1101 1110//=0101 0001 0101 0100// 14 12 8 6 4 2 System.out.println("\nbits2 AND bits1: ");System.out.println(bits2);// OR bits,对应位有一个1就为1bits2.or(bits1);// 0101 0101 0101 0101// 0101 0001 0101 0100//=0101 0101 0101 0101// 14 12 10 8 6 4 2 0System.out.println("\nbits2 OR bits1: ");System.out.println(bits2);// XOR bits,对应位不同为1,相同为0bits2.xor(bits1);// 0101 0101 0101 0101// 0101 0101 0101 0101// 0000 0000 0000 0000System.out.println("\nbits2 XOR bits1: ");System.out.println(bits2);}}
运行结果:
Initial pattern in bits1: {0, 2, 4, 6, 8, 10, 12, 14}Initial pattern in bits2: {1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}bits2 AND bits1: {2, 4, 6, 8, 12, 14}bits2 OR bits1: {0, 2, 4, 6, 8, 10, 12, 14}bits2 XOR bits1: {}
没什么好说的,概念和C++等其它语言一样;
阅读全文
1 0
- C++程序员学Java系列之二九:数据结构之Bitset
- C++程序员学Java系列之二六:数据结构之枚举(Enumeration)
- C++程序员学Java系列之三二:数据结构之属性(Properties)
- C++程序员学Java系列之二二:static 关键字
- C++程序员学Java系列之二一:final 关键字
- C++程序员学Java系列之二三:匿名对象
- C++程序员学Java系列之二五:包(package)
- C++程序员学Java系列之九:流程控制语句if,else
- C++程序员学Java系列之三十:数据结构之向量Vector
- C++程序员学Java系列之三一:数据结构之Stack(栈)
- C++程序员学Java系列之二: Java开发环境概述
- php程序员学C/C++之学习系列-【C基础】
- C++程序员学Java系列之二四:内部类及匿名内部类概念
- 一步步 学数据结构 之 二
- C++程序员学Java系列之六:运算符
- C++程序员学Java系列之八:随机数类Random
- C++程序员学Java系列之十六:ArrayList 集合
- C++程序员学Java系列之十七:面向对象
- 你不知道的坑~android原声alerdialog双指触摸必现crash
- java 剑指offer 第一题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- mybatis中SqlMapConfig文件配置(六)
- Deep Learning概述
- CMake入门指南
- C++程序员学Java系列之二九:数据结构之Bitset
- org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
- sd
- html 页面内锚点定位及跳转方法总结
- Spring定时器,cronExpression表达式解释
- 集合list,set,map
- easyui中使用两个嵌套的 tabs 时页面无法出现滚动条
- 滑动冲突学习实例——头部可折叠的RecyclerView
- Android 高级混淆和代码保护技术