Альтернативой, которая, вероятно, более эффективна, будет работа с базовым long [].
Используйте bitset.toLongArray()
для получения базовых данных.Сдвиньте эти длинные соответственно, затем создайте новый BitSet с помощью BitSet.valueOf(long[])
. Вы должны быть очень осторожны, перемещая лежащие в основе длинные, так как вам придется взять бит младшего разряда и сдвинуть его в бит старшего разряда на следующем длинноммассив.
Этот должен позволять вам использовать собственные операции сдвига бит на вашем процессоре для перемещения 64 бит за раз, в отличие от итерации каждой из них в отдельности.
РЕДАКТИРОВАТЬ: на основе комментария Луи Вассермана.Это доступно только в Java 1.7 API.Не понял, когда я это написал.