Любой быстрый способ подсчета количества битов в бит-бите, отличный от обычного метода «держать счетчик»?Java: количество бит, установленное в java.util.BitSet
4
A
ответ
20
Метод cardinality() возвращает количество установленных бит.
3
(Предполагая, что вы не хотите вызвать кардинальное())
int count = 0;
for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i+1)) {
count++;
}
0
BitSet B1 = new BitSet(3);
B1.set(0);
B1.cardinality();
Выход:
1
+5
Это не намного больше, чем ответ, ссылающийся на этот метод, опубликованный 6 лет назад. – Dukeling
Если вы задавались вопросом, как это реализовано: It не хранит внутренний счетчик, он перебирает «long []», который используется для хранения битов и вызывает «Long # bitCount» для каждого из Эм. – Thilo
Под обложками используется Long.bitCount(). На современных процессорах есть команда CPU для этого, popcnt. В последних версиях Java Long.bitCount() использует эту инструкцию. Просто используйте -XX: + UsePopCountInstruction, чтобы включить его (это значение по умолчанию в последних версиях Java) – user2056182