Java 位集大小不一致

Java 位集大小不一致,java,random,bitset,Java,Random,Bitset,我正在初始化一个长度为4的位集变量。当我尝试使用Random的类nextBoolean方法为该位集设定种子时。它提供了删除元素的效果。这很可能是因为我没有使用位集的经验。但据我所知,Bitset变量中的每个元素都应该有一个随机的0或1。有人能看出我做错了什么并解释这是什么吗 public void seedCandidate() { // Randomly sets bits in the candidate for (int i = 0; i < numVals; i+

我正在初始化一个长度为4的位集变量。当我尝试使用Random的类nextBoolean方法为该位集设定种子时。它提供了删除元素的效果。这很可能是因为我没有使用位集的经验。但据我所知,Bitset变量中的每个元素都应该有一个随机的0或1。有人能看出我做错了什么并解释这是什么吗

public void seedCandidate()
{
    // Randomly sets bits in the candidate

    for (int i = 0; i < numVals; i++)
        truthVals.set(i, rn.nextBoolean());

}
public-void-seedCandidate()
{
//随机设置候选中的位
对于(int i=0;i
当我输出位集的长度时,它会给出随机大小。truthVals(Bitset变量)的长度应该是4,这是它的实例,因此它应该是{0,1,2,3}。但是在顶部的方法播种之后,我得到了这些不同的长度。来自不同的位集变量

{1,2,3},{0,1,2,3},{0},{0,2,3}

来自:

  • 公共位集(int-nbits)

    创建一个位集,其初始大小足以显式表示索引范围在0到nbits-1之间的位所有位最初都为假

  • public int length()

    返回此位集的“逻辑大小:位集中最高位的索引加上一个。如果位集不包含设置位,则返回零

  • public int size()

    返回此位集实际用于表示位值的空间位数

  • public int基数()

    返回此位集中设置为true的位数

  • public void set(int-bitIndex,布尔值)

    将指定索引处的位设置为指定值

  • 当然还有前面提到的
    公共字符串toString()


  • 那么什么是混乱/意外的呢?

    将位集视为布尔数组。(当然,实现是一个长的位数组。)

    • set(7,true)
      将“如果尚未添加,则向集合中添加7。”
    • set(7,false)
      将“从集合中删除7(如果已经存在)。”
    可能导致混淆的命名方法:

    • int基数()
    • int size()
      容量(保留位,“数组大小”)

    @shmosel通过使用循环和set方法,在我的例子中,toString方法不应该每次都返回{0,1,2,3},因为numVals=4?否。它只包含设置位。