当前位置:七道奇文章资讯编程技术Java编程
日期: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版本的错误:
//: 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);
  }
} ///:~
随机数字生成器用于成立一个随机的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.
  以上是“java中的BitSet[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .