为什么你会在java中使用BitSet而不是布尔数组(在Java中)?

时间:2014-03-04 03:35:24

标签: java bit-manipulation bitset

除了可用方法的不同之外,为什么有人会使用BitSet而不是布尔数组呢?某些操作的性能是否更好?

2 个答案:

答案 0 :(得分:8)

您可以这样做以节省空间:boolean占用整个字节,因此N boolean的数组将占用BitSet空间的八倍具有相同数量的条目。

执行速度是另一个密切相关的问题:您可以更快地生成一个联合或多个BitSet对象的交集,因为这些操作可以由CPU按位32位进行按位AND和OR执行。 / p>

答案 1 :(得分:1)

除了@dasblinkenlight注意到的空间节省之外,BitSet还具有根据需要增长的优势。如果您事先不知道需要多少位,或者高编号位稀疏且很少使用(例如,您正在检测文档中存在哪些Unicode字符,并且您希望允许不常见的“外来”字符> ; 128但你知道它们很少见)BitSet会节省更多的内存。