加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 检查BitSet中的所有位是否都设置为true

发布时间:2020-12-15 04:33:14 所属栏目:Java 来源:网络整理
导读:我在我的应用程序中使用BitSet,并希望检查一个方法,如果BitSet中的所有使用位都设置为true.现在,我知道方法isEmpty()检查是否所有位都设置为false,但我似乎无法找到正面情况.我知道我可以做像someBitSet.cardinality()== someBitSet.size()这样的事情,但这看
我在我的应用程序中使用BitSet,并希望检查一个方法,如果BitSet中的所有使用位都设置为true.现在,我知道方法isEmpty()检查是否所有位都设置为false,但我似乎无法找到正面情况.我知道我可以做像someBitSet.cardinality()== someBitSet.size()这样的事情,但这看起来很笨拙.我错过了什么,或者是否有明确的理由说明为什么没有实施这样的方法,但情况恰恰相反?

解决方法

没有像“BitSet中的所有位”那样的东西,因为在任何时候你都可以设置比目前为止设置的最大位更大的位.假设您希望在BitSet中保留最多10个值.所以你设置10位,并想检查是否所有这些都是真的.但是BitSet不知道你只有10位.怎么样你有更多?下次你可以调用bitSet.set(10000)它会工作(BitSet会自动调整大小).

请注意,bitSet.size()在一般情况下不是很有用:它是关于消耗的内存.当前实现始终是64的倍数,因此如果您只有10个不同的状态,someBitSet.cardinality()== someBitSet.size()将始终返回false.即使您使用新的BitSet(10)创建了BitSet.构造函数参数只是一个所需的初始容量(如在ArrayList中).它仅用作性能提示.

从性能的角度来看,最佳解决方案是检查nextClearBit(0)> = myLength,其中myLength是您要在BitSet中存储的最大值数(您应该自己保留它).如果结果为假,这可能比cardinality()更快.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读