Java BitSet
来源:互联网 发布:如何修改网卡mac地址 编辑:程序博客网 时间:2024/05/21 11:36
所用jdk版本为1.6.
BitSet是一个按需增长的位向量,位向量指有大小端的由0,1组成的串。此类是线程不安全的。
索引从0开始,负数索引会异常,位向量的每个位都有一个boolean值,默认情况下,初始值都是false。
BitSet
表示位值时实际使用空间的位数由size()方法返回,返回值是64的倍数,最小是64。length()方法返回的是实际使用的位大小,结果是最高设置位的索引加1。
BitSet还可以进行逻辑运算,比如与、或、异或。
BitSet的toString方法返回的是设置了true值的所有索引。
BitSet有两个构造方法:一个默认构造,一个可以传初始大小的构造。它的大小是按需增长的,如果考虑到性能,最好选择一个初始大小。
import java.util.BitSet;public class Demo {public static void main(String args[]) {BitSet bs1 = new BitSet(16);BitSet bs2 = new BitSet(16);BitSet bs3 = new BitSet();BitSet bs4 = new BitSet();// intersects,如果两个BitSet中至少有一位双方都设置为true,则返回truebs3.set(1);bs3.set(2);bs4.set(1);System.out.println(bs3.intersects(bs4));// 输出true// length/sizebs3.set(100);// 设置索引为100的位为trueSystem.out.println(bs3.size());// 输出128,因为我们在索引100设置了值,因此64容纳不下,只能选择64*2=128才能够容纳。System.out.println(bs3.length());// 输出101,表示使用了101位二进制。// toString,输出值为true的索引,set方法用于设置索引的值,有几个重载,具体看文档for (int i = 0; i < 16; i++) {if ((i % 2) == 0)bs1.set(i);if ((i % 3) == 0)bs2.set(i);}System.out.println(bs1);// 输出{0, 2, 4, 6, 8, 10, 12, 14}System.out.println(bs2);// 输出{0, 3, 6, 9, 12, 15}// flip,即某位的值如果是true则设为false,false则设为true,第一个参数表示从哪个索引开始,第二个表示到哪个索引的前一个索引结束bs1.flip(0, bs1.length());bs2.flip(0, bs2.length());System.out.println(bs1);// 输出{1, 3, 5, 7, 9, 11, 13}System.out.println(bs2);// 输出{1, 2, 4, 5, 7, 8, 10, 11, 13, 14}// clear,所有位设为falsebs1.clear();bs2.clear();System.out.println(bs1);// 输出{}System.out.println(bs2);// 输出{}// and/or/xor 这些方法改变的是当前BitSet而不是目标BitSet(即方法参数BitSet)// 重置bs1和bs2for (int i = 0; i < 16; i++) {if ((i % 2) == 0)bs1.set(i);if ((i % 3) == 0)bs2.set(i);}bs2.and(bs1);System.out.println(bs2);// 输出{0, 6, 12}// 重置bs1和bs2for (int i = 0; i < 16; i++) {if ((i % 2) == 0)bs1.set(i);if ((i % 3) == 0)bs2.set(i);}bs2.or(bs1);System.out.println(bs2);// 输出{0, 2, 3, 4, 6, 8, 9, 10, 12, 14, 15}// 重置bs1和bs2for (int i = 0; i < 16; i++) {if ((i % 2) == 0)bs1.set(i);if ((i % 3) == 0)bs2.set(i);}bs2.xor(bs1);System.out.println(bs2);// 输出{3, 9, 15}// get,获取指定索引的值System.out.println(bs2.get(3));// 输出true// cardinality,返回值为true的位数System.out.println(bs2.cardinality());// 输出3// 其他方法看文档}}
0 0
- Java BitSet
- java BitSet
- java bitset
- Java BitSet
- Java BitSet
- BitSet---Java!!!
- java中的BitSet学习
- java中的BitSet学习
- JAVA Bitset应用总结
- java中的BitSet学习
- java中的BitSet学习
- java.util.BitSet 分析
- java中的BitSet学习
- java bitSet的学习
- Java BitSet 找素数
- Java中的Bitset类
- Java BitSet类
- 15 java.util.BitSet
- [Xcode 7.0 beta]与[iOS 8.4] Could not find developer disk image
- 20150710
- Swift教程之枚举语法
- jquery关于checkbox判断,在1.11.3版本该如何使用?
- atomic_inc 原子操作
- Java BitSet
- 社説 20150710 中国株乱高下 強引な市場介入が招いた混迷
- python操作日期和时间的方法
- 代码控制ImageView的src属性
- android caculator
- poco Mutex(互斥量)
- Hadoop之hive学习命令
- 在iOS中创建静态库
- Python下opencv使用笔记(五)(图像的平滑与滤波)