日期:2011-03-22 16:17:00 来源:本站整理
java中的BitSet[Java编程]
本文“java中的BitSet[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
BitSet实际是由“二进制位”构成的一个Vector.假如但愿高效率地保存大量“开-关”信息,就应利用BitSet.它只有从尺寸的角度看才有意义;假如但愿的高效率的拜候,那么它的速度会比利用一些固有范例的数组慢一些.
此外,BitSet的最小长度是一个长整数(Long)的长度:64位.这意味着假定我们预备保存比这更小的数据,如8位数据,那么BitSet就显得浪费了.所以最好成立自己的类,用它包容自己的标志位.
在一个普通的Vector中,随我们加入越来越多的元素,调集也会自我膨胀.在某种程度上,BitSet也不例外.也就是说,它有时会自行扩大,有时则不然.并且Java的1.0版本仿佛在这方面做得最糟,它的BitSet表现非常差强人意(Java1.1已改正了这个问题).下面这个例子展示了BitSet是若何运作的,同时演示了1.0版本的错误:
随机数字生成器用于成立一个随机的byte、short和int.每一个城市转换成BitSet内呼应的位模子.此时一切都很正常,因为BitSet是64位的,所以它们都不会造成终究尺寸的增大.但在Java 1.0中,一旦BitSet大于64位,就会呈现一些令人迷惑不解的行为.假定我们设置一个只比BitSet当前分配存储空间大出1的一个位,它可以正常地扩大.但一旦试图在更高的位置设置位,同时不先接触边界,就会得到一个恼人的违例.这恰是由于BitSet在Java 1.0里不能精确扩大造成的.本例成立了一个512位的BitSet.构建器分配的存储空间是位数的两倍.所以假定设置位1024或更高的位,同时没有先设置位1023,就会在Java 1.0里得到一个违例.但幸运的是,这个问题已在Java 1.1得到了改正.所以假如是为Java 1.0写代码,请尽大概避免利用BitSet.//: Bits.java // Demonstration of BitSet import java.util.*; public class Bits { public static void main(String[] args) { Random rand = new Random(); // Take the LSB of nextInt(): byte bt = (byte)rand.nextInt(); BitSet bb = new BitSet(); for(int i = 7; i >=0; i--) if(((1 << i) & bt) != 0) bb.set(i); else bb.clear(i); System.out.println("byte value: " + bt); printBitSet(bb); short st = (short)rand.nextInt(); BitSet bs = new BitSet(); for(int i = 15; i >=0; i--) if(((1 << i) & st) != 0) bs.set(i); else bs.clear(i); System.out.println("short value: " + st); printBitSet(bs); int it = rand.nextInt(); BitSet bi = new BitSet(); for(int i = 31; i >=0; i--) if(((1 << i) & it) != 0) bi.set(i); else bi.clear(i); System.out.println("int value: " + it); printBitSet(bi); // Test bitsets >= 64 bits: BitSet b127 = new BitSet(); b127.set(127); System.out.println("set bit 127: " + b127); BitSet b255 = new BitSet(65); b255.set(255); System.out.println("set bit 255: " + b255); BitSet b1023 = new BitSet(512); // Without the following, an exception is thrown // in the Java 1.0 implementation of BitSet: // b1023.set(1023); b1023.set(1024); System.out.println("set bit 1023: " + b1023); } static void printBitSet(BitSet b) { System.out.println("bits: " + b); String bbits = new String(); for(int j = 0; j < b.size() ; j++) bbits += (b.get(j) ? "1" : "0"); System.out.println("bit pattern: " + bbits); } } ///:~
以上是“java中的BitSet[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:java的stack用法
- ·下一篇文章:java的vector 用法
- ·中查找“java中的BitSet”更多相关内容
- ·中查找“java中的BitSet”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论