Несоответствие размеров битов - PullRequest
0 голосов
/ 29 января 2019

, поэтому я инициализирую переменную Bitset длиной 4. Когда я пытаюсь заполнить этот Bitset с помощью метода nextBoolean класса Random.Это дает эффект удаления элементов.Это более чем вероятно, моя неопытность с использованием 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}.Но после высева из метода сверху я получаю эти разные длины.Из разных битовых переменных.

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

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Считайте битовый массив логическим массивом.(Реализация, конечно, длинный массив битов.)

  • set(7, true) "добавит 7 к набору, если еще не добавлено."
  • set(7, false) "удалит 7из набора, если он уже существует. "

К сожалению, названные методы могут вызвать путаницу:

  • int cardinality() количество истинных элементов
  • int size() емкость (зарезервированные биты, «размер массива»)
0 голосов
/ 06 февраля 2019

Из BitSet-javadoc :

  1. public BitSet(int nbits)

    Создает набор битов, начальный размер которого достаточно велик дляявно представляют биты с индексами в диапазоне от 0 до nbit-1. Все биты изначально ложны .

  2. public int length()

    Возвращает «логический размер» этого набора битов: индекс старшего установленного бита в BitSet плюс один .Возвращает ноль, если BitSet не содержит установленных битов.

  3. public int size()

    Возвращает количество битов пространства фактически используется этим BitSet для представления битовых значений.

  4. public int cardinality()

    Возвращает количество битов, установленных в true в этом BitSet.

  5. public void set(int bitIndex, boolean value)

    Устанавливает бит по указанному индексу в указанное значение.

  6. И, конечно, упомянутое public String toString() ...

Так в чем же путаница / неожиданность?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...