2012-06-16 3 views
1

Я хочу рассчитать общее количество бит в объекте BitSet. Метод length возвращает «логический размер» BitSet: индекс самого старшего бита в BitSet плюс один, тогда как метод cardinality даст общее количество бит, установленное в 1 в объекте.Как вычислить общее количество бит в объекте BitSet?

Я хочу рассчитать общее количество бит, включая как 0s, так и 1s. Как мне это сделать?

+1

Я не думаю, что это заслуживает ниспровержения. Разница между 'length' и' size' путается, именование IMHO очень неуместно, а документация отстой. – maaartinus

ответ

3

Как насчет BitSet.size()? .....

+0

size возвращает количество бит пространства, фактически используемого этим BitSet для представления значений бит. – Saurabh

+0

Я хочу рассчитать количество бит, а не пробел. – Saurabh

+1

@Saurabh: Я не думаю, что «BitSet» предназначен для этого; нет понятия «наивысший» 0. –

-1

The site показывает, как преобразовать в двоичный BitSet String. Тогда просто вычислить метод string.length()

+1

Почему это было отмечено? Если вы считаете это неправильным/вводящим в заблуждение, по крайней мере, объясните, почему. –

+2

@Disco 3: Это как вычисление длины строки, сначала поместив все ее символы в список, а затем вернув его, а затем вызвав list.size(). Полностью неэффективен. Кроме того, связанный с этим метод полностью нарушен, и результат будет всегда 32. – maaartinus

+0

Я ошибался ... метод там работает только с 'int', поэтому он не сломан, просто неприменим для этого вопроса. И неэффективный (бесполезный обратный) и бесполезный (см. «Integer.toString (int i, int radix)»). – maaartinus