Czy jest jakiś szczególny powód, dla którego ich brakuje?Dlaczego Java `BitSet` nie ma funkcji` shiftLeft` i `shiftRight`?
Występują one w wersji BigInteger
, ale ze względu na niezmienny wzór projektu BigInteger
są one zwykle bardzo wolne. BitSet
jest o wiele ładniejszy, ponieważ jest zmienny, ale brakuje mi funkcji shift
(s). Dla BitSet
przydatne będzie również przesunięcie w miejscu, jak również rotacja cykliczna.
Widziałem odpowiedź na Shifting a Java BitSet (używanie get(off, len)
do zmiany biegów, jednak wymaga to kopiowania).
Nie zrozum mnie źle. Wiem, gdzie zgłaszać błędy. Zastanawiam się tylko, czy istnieje szczególny powód powodujący ich pominięcie, np. jakiś wzorzec projektowy lub taka koncepcja. W szczególności jako są zawarty w BigInteger
.
Ponieważ jest to "zestaw", a nie "ciąg". – bmargulies
@bmargulies: '' long' też nie jest ciągiem. Ma jednak operatorów zmianowych. A 'String' faktycznie nie ma. A semantyka "get (i, j)" zasadniczo zgadza się z 'substring' i nie jest dostępna dla' long' albo ... –
Termin 'set' oznacza kolekcję * an unacheered *. BitSet ma zadanie wiedzieć, które moce 2 są włączone, a nie tasować je. – bmargulies