C'è qualche motivo particolare per cui questi sono mancanti?Perché Java `BitSet` non ha le funzioni` shiftLeft` e `shiftRight`?
Esiste in BigInteger
, ma a causa del modello di progettazione immutabile di BigInteger
questi sono in genere terribilmente lenti. BitSet
è molto più bello perché è mutabile, ma mi mancano davvero le funzioni shift
(<<
e per long
s). Per BitSet
, sarebbe utile anche uno spostamento sul posto, oltre alla rotazione ciclica.
Ho visto la risposta a Shifting a Java BitSet (utilizzando get(off, len)
per lo spostamento, tuttavia ciò richiede la copia).
Non fraintendetemi. So dove segnalare i bug. Mi stavo chiedendo se c'era un particolare motivo per ometterli, ad esempio , ad es. qualche motivo di design o un tale concetto. In particolare poiché sono inclusi in BigInteger
.
Perché è un "set", non una "stringa". – bmargulies
@bmargulies: A 'long' non è una stringa. Eppure, ha gli operatori di turno. E un 'String' in realtà no. E la semantica 'get (i, j)' concorda essenzialmente con 'substring', e non è disponibile per' long' o ... –
Il termine 'set' significa 'una * collezione non ordinata *. Il BitSet ha il compito di sapere quali poteri di 2 sono attivati, non di mescolarli. – bmargulies