我在我的应用程序中使用了一个
BitSet
,并希望使用一种方法来检查BitSet
中所有已使用的位是否设置为true
。我知道有一种方法isEmpty()
可以检查所有位是否都设置为false
,但我似乎找不到正面情况。我知道我可以做一些像someBitSet.cardinality() == someBitSet.size()
这样的事情,但这似乎很笨拙。我是错过了什么还是有明确的原因为什么没有实现这样的方法而实现了相反的情况?
BitSet.length()
方法:“返回此BitSet的“逻辑大小”:BitSet中最高位设置的索引值加一”,这正是所需的操作,与size()
相比。因此,您需要的操作是bs.length()==bs.nextClearBit(0)
,它可以工作并且潜在上比基于cardinality()
的解决方案更有效,但仍然很笨拙。 - HolgerbitSet.nextClearBit(0)==bitSet.length()
或bitSet.cardinality()==bitSet.length()
。其中,对于非常大的位集,nextClearBit(0)可能比cardinality()更有效;考虑到具有数万/数十万元素的位集,我无法测量出速度上的任何差异。 - Jaja