# Java Bitset类
一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。这和位向量(vector of bits)比较类似。
这是一个传统的类,但它在Java 2中被完全重新设计。
BitSet定义了两个构造方法。
第一个构造方法创建一个默认的对象:
```
BitSet()
```
第二个方法允许用户指定初始大小。所有位初始化为0。
```
BitSet(int size)
```
BitSet中实现了Cloneable接口中定义的方法如下表所列:
| 方法 | 描述 |
| --- | --- |
| void and(BitSet bitSet) | 对此目标位 set 和参数位 set 执行逻辑与操作。 |
| void andNot(BitSet bitSet) | 清除此 BitSet 中所有的位,其相应的位在指定的 BitSet 中已设置。 |
| int cardinality( ) | 返回此 BitSet 中设置为 true 的位数。 |
| void clear( ) | 将此 BitSet 中的所有位设置为 false。 |
| void clear(int index) | 将索引指定处的位设置为 false。 |
| void clear(int startIndex, int endIndex) | 将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 false。 |
| Object clone( ) | 复制此 BitSet,生成一个与之相等的新 BitSet。 |
| boolean equals(Object bitSet) | 将此对象与指定的对象进行比较。 |
| void flip(int index) | 将指定索引处的位设置为其当前值的补码。 |
| void flip(int startIndex, int endIndex) | 将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的每个位设置为其当前值的补码。 |
| boolean get(int index) | 返回指定索引处的位值。 |
| BitSet get(int startIndex, int endIndex) | 返回一个新的 BitSet,它由此 BitSet 中从 fromIndex(包括)到 toIndex(不包括)范围内的位组成。 |
| int hashCode( ) | 返回此位 set 的哈希码值。 |
| boolean intersects(BitSet bitSet) | 如果指定的 BitSet 中有设置为 true 的位,并且在此 BitSet 中也将其设置为 true,则返回 ture。 |
| boolean isEmpty( ) | 如果此 BitSet 中没有包含任何设置为 true 的位,则返回 ture。 |
| int length( ) | 返回此 BitSet 的"逻辑大小":BitSet 中最高设置位的索引加 1。 |
| int nextClearBit(int startIndex) | 返回第一个设置为 false 的位的索引,这发生在指定的起始索引或之后的索引上。 |
| int nextSetBit(int startIndex) | 返回第一个设置为 true 的位的索引,这发生在指定的起始索引或之后的索引上。 |
| void or(BitSet bitSet) | 对此位 set 和位 set 参数执行逻辑或操作。 |
| void set(int index) | 将指定索引处的位设置为 true。 |
| void set(int index, boolean v) | 将指定索引处的位设置为指定的值。 |
| void set(int startIndex, int endIndex) | 将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 true。 |
| void set(int startIndex, int endIndex, boolean v) | 将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为指定的值。 |
| int size( ) | 返回此 BitSet 表示位值时实际使用空间的位数。 |
| String toString( ) | 返回此位 set 的字符串表示形式。 |
| void xor(BitSet bitSet) | 对此位 set 和位 set 参数执行逻辑异或操作。 |
### 实例
下面的程序说明这个数据结构支持的几个方法:
```
import java.util.BitSet;
public class BitSetDemo {
public static void main(String args[]) {
BitSet bits1 = new BitSet(16);
BitSet bits2 = new BitSet(16);
// set some bits
for(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);
System.out.println("\nInitial pattern in bits2: ");
System.out.println(bits2);
// AND bits
bits2.and(bits1);
System.out.println("\nbits2 AND bits1: ");
System.out.println(bits2);
// OR bits
bits2.or(bits1);
System.out.println("\nbits2 OR bits1: ");
System.out.println(bits2);
// XOR bits
bits2.xor(bits1);
System.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:
{}
```
- Java 基础
- Java 简介
- Java开发环境配置
- Java基础语法
- Java对象和类
- Java基本数据类型
- Java变量类型
- Java修饰符
- Java运算符
- Java循环结构 - for, while 及 do...while
- Java分支结构 - if...else/switch
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 面向对象
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 接口
- Java 包(package)
- Java 高级教程
- Java 数据结构
- Java Enumeration接口
- Java Bitset类
- Java Vector 类
- Java Stack 类
- Java Dictionary 类
- Java Hashtable 接口
- Java Properties 接口
- Java 集合框架
- Java 泛型
- Java序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Servlet 教程
- Servlet 简介
- Servlet 环境设置
- Servlet 生命周期
- Servlet 实例
- Servlet 表单数据
- Servlet 客户端 HTTP 请求
- Servlet 服务器 HTTP 响应
- Servlet HTTP 状态码
- Servlet 编写过滤器
- Servlet 异常处理
- Servlet Cookies 处理
- Servlet Session 跟踪
- Servlet 数据库访问
- Servlet 文件上传
- Servlet 处理日期
- Servlet 网页重定向
- Servlet 点击计数器
- Servlet 自动刷新页面
- Servlet 发送电子邮件
- Servlet 包
- Servlet 调试
- Servlet 国际化
- JSP 基础
- JSP 简介
- JSP 开发环境搭建
- JSP 结构
- JSP 生命周期
- JSP 语法
- JSP 指令
- JSP 动作元素
- JSP 动作元素
- JSP 隐含对象
- JSP 客户端请求
- JSP 服务器响应
- JSP HTTP 状态码
- JSP 表单处理
- JSP 过滤器
- JSP Cookies 处理
- JSP Session
- JSP 文件上传
- JSP 日期处理
- JSP 页面重定向
- JSP 点击量统计
- JSP 自动刷新
- JSP 发送邮件
- JSP 高级教程
- JSP 标准标签库(JSTL)
- JSP 连接数据库
- JSP XML 数据处理
- JSP JavaBean
- JSP 自定义标签
- JSP 表达式语言
- JSP 异常处理
- JSP 调试
- JSP 国际化
- 免责声明