运用BitSet类来处理一系列选项

ZDNet软件频道 时间:2003-03-05 作者:翻译:Java研究组织-sunsnake |  我要评论()
本文关键词:javatips
如果你想仿效C的编程风格在一个单独变量中存储许多布尔变量值的话,使用java.util.BitSet类要比把它们编译成一个初始的’long’型变量更好。
如果你想仿效C的编程风格在一个单独变量中存储许多布尔变量值的话,使用java.util.BitSet类要比把它们编译成一个初始的’long’型变量更好。

BitSet类以简练和低内存消耗的方式处理一系列的选项是有益的。它提供了将N个位存进一个普通对象的方法。类本身必须决定应该使用多少内存并且何时改变策略。所有的开发人员都不得不为该设置哪个位而担心。位直到设置后才自动关闭。

这是如何创建一个BitSet:

//for the value ‘01001’

BitSet bits=new BitSet();

bits.set(1);

bits.set(4);

使用toString方法可能会自动输出一个BitSet。输出的数据会类似于以下这样:

你也可以使用一种以二进制表示输出的方法,例如:

static public String output(BitSet bits) {

int size=bits.length();

StringBuffer buffer=new StringBuffer();

for (int i=0; i<size; i++) {

   buffer.append((bits.get(1))?”1”:”0”);

}

return buffer.toString();

}

胜于输出‘’,上面的例子会输出‘01001’。

BitSets 通过布尔代数方法and,xor,和andNot合并到一起。比如,10001 and 00001会返回10000。

size() 方法返回当前正在使用中的空间的位数量而不是在一个BitSet中的位的数量。然而,length()方法直到最高的”true”值加一才返回位的个数。这可以引起一个和output(BitSet)方法有关的问题—“10001 andNot 00001” 会等于”1”因为更高位的0不会被显示出来。



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134