位集合的大小不一致

问题描述 投票:-1回答:2

所以我用初始化4.长度的比特集变量当我尝试播种此BitSet与随机的类nextBoolean方法。它给删除元素的效果。这极有可能我的经验不足,使用比特集更多。但据我的理解中位集合变量中的每个元素应该有一个随机的0或1。有人能看到它是什么,我做错了,并解释这是什么?

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

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

}

当我将它输出给随机尺寸位集的长度。 truthVals的长度(比特集变量)应该是4这就是它得到了实例化到所以它应该是{0,1,2,3}。但是从方法上顶部的播种后我得到这些不同的长度。从不同的位集合的变量。

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

java random bitset
2个回答
2
投票

BitSet-javadoc

  1. public BitSet(int nbits) 创建一个位set它的初始大小足够大到nbits-1显式表示索引范围在0位。所有的位初始均为false。
  2. public int length() 返回此BitSet的“逻辑大小”:最高设置位的位集索引加1。返回零如果BitSet中不包含任何设置位。
  3. public int size() 返回的实际使用空间的位数由此BitSet表示位值。
  4. public int cardinality() 返回此BitSet中设置为true的位数。
  5. public void set(int bitIndex, boolean value) 将指定索引指定值位的。
  6. 当然还有提到public String toString() ...

那么,什么是混乱/意外?


0
投票

考虑位集合的布尔数组。 (当然长的比特阵列的实现。)

  • set(7, true)将“增加7所设定的,如果尚未添加”。
  • set(7, false)将“从一组,如果已经存在删除7。”

不幸的命名方法,可能会引起混淆:

  • int cardinality()真元件的数目
  • int size()容量(保留比特,“阵列尺寸”)
© www.soinside.com 2019 - 2024. All rights reserved.