¿Hay alguna razón en particular por la cual faltan estos?¿Por qué Java `BitSet` no tiene las funciones` shiftLeft` y `shiftRight`?
Existen en BigInteger
, pero debido al patrón de diseño inmutable de BigInteger
, estos son muy lentos. BitSet
es mucho mejor porque es mutable, pero echo de menos las funciones shift
(<<
y >>>
para long
s). Para BitSet
, un cambio en el lugar también sería útil, así como la rotación cíclica.
He visto la respuesta a Shifting a Java BitSet (usando get(off, len)
para cambiar, sin embargo esto requiere copiar).
No me malinterprete. Sé dónde reportar errores. Me pregunto si hubo un motivo en particular para omitirlos, p. algún patrón de diseño o tal concepto. En particular, ya que son incluidos en BigInteger
.
Porque es un 'conjunto', no una 'cadena'. – bmargulies
@bmargulies: Un 'long' tampoco es una cadena. Sin embargo, tiene operadores de turno. Y un 'String' en realidad no tiene. Y la semántica 'get (i, j)' esencialmente concuerda con 'substring', y tampoco están disponibles para' long' ... –
El término 'set' significa 'an * desordered * collection'. El BitSet tiene la función de saber qué potencias de 2 están encendidas, no de mezclarlas. – bmargulies