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

Nic*_*ick 3 java bit-manipulation bitset

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

das*_*ght 8

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

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

  • @ user949300即使对于那些人来说,如果增加的数据局部性保留了CPU缓存中的更多位,那么在某些情况下这些操作会更快.我不确定这是否足以抵消额外的指令,但它可能是. (2认同)