所以我要初始化一个长度为4的Bitset变量。当我尝试使用Random的class nextBoolean方法将该Bitset设置为种子时。它给删除元素的效果。这很可能是我对使用Bitset的经验不足。但是据我了解,Bitset变量中的每个元素都应具有随机的0或1。有人可以看出我做错了什么吗,并解释这是什么吗?
public void seedCandidate()
{
// Randomly sets bits in the candidate
for (int i = 0; i < numVals; i++)
truthVals.set(i, rn.nextBoolean());
}
当我输出位集的长度时,它给出了随机大小。 trueVals(Bitset变量)的长度应为4,这是它实例化后的长度,因此应为{0,1,2,3}。但是从上面的方法播种后,我得到了这些不同的长度。来自不同的Bitset变量。
{1,2,3},{0,1,2,3},{0},{0,2,3}
答案 0 :(得分:2)
public BitSet(int nbits)
创建一个位集合,其初始大小足够大以显式表示索引范围在0到nbits-1之间的位。 所有位最初都是假的。
public int length()
返回此BitSet的“逻辑大小”: BitSet中最高设置位的索引加一个。如果BitSet不包含任何设置位,则返回零。
public int size()
返回此BitSet实际使用的位数位数,以表示位数。
public int cardinality()
返回此BitSet中设置为true的位数。
public void set(int bitIndex, boolean value)
将指定索引处的位设置为指定值。
当然还有提到的public String toString()
...
那么什么是困惑/意外?
答案 1 :(得分:0)
请考虑将一个布尔数组置位。 (实现的过程当然是一长串的位。)
set(7, true)
将“如果尚未添加7,则添加到集合中。” set(7, false)
将“从集合中删除7(如果已存在)。” 不幸命名的方法可能会引起混乱:
int cardinality()
真实元素的数量int size()
的容量(保留位,“数组大小”)