Clase Java Bitset
Una clase Bitset crea un tipo especial de array para almacenar valores de bits. El tamaño del array en BitSet aumenta según sea necesario. Esto es similar a un vector de bits.
Es una clase tradicional, pero fue completamente rediseñada en Java 2.
BitSet define dos constructores.
El primer constructor crea un objeto predeterminado:
BitSet()
El segundo método permite al usuario especificar el tamaño inicial. Todos los bits se inicializan a 0.
BitSet(int size)
BitSet implementa los métodos definidos en la interfaz Cloneable, como se enumeran en la siguiente tabla:
| No. | Descripción del método |
|---|---|
| 1 |
void and(BitSet set) Realiza una operación AND lógica entre este bitset objetivo y el bitset del argumento. |
| 2 |
void andNot(BitSet set) Limpia todos los bits de este BitSet cuyos bits correspondientes en el BitSet especificado estén establecidos. |
| 3 |
int cardinality( ) Devuelve el número de bits establecidos a true en este BitSet. |
| 4 |
void clear( ) Establece todos los bits de este BitSet a false. |
| 5 |
void clear(int index) Establece el bit en el índice especificado a false. |
| 6 |
void clear(int startIndex, int endIndex) Establece los bits desde el startIndex especificado (incluido) hasta el toIndex especificado (excluido) a false. |
| 7 |
Object clone( ) Copia este BitSet, generando un nuevo BitSet igual a este. |
| 8 |
boolean equals(Object bitSet) Compara este objeto con el objeto especificado. |
| 9 |
void flip(int index) Establece el bit en el índice especificado al complemento de su valor actual. |
| 10 |
void flip(int startIndex, int endIndex) Establece cada bit desde el fromIndex especificado (incluido) hasta el toIndex especificado (excluido) al complemento de su valor actual. |
| 11 |
boolean get(int index) Devuelve el valor del bit en el índice especificado. |
| 12 |
BitSet get(int startIndex, int endIndex) Devuelve un nuevo BitSet compuesto por los bits de este BitSet desde fromIndex (incluido) hasta toIndex (excluido). |
| 13 |
int hashCode( ) Devuelve el valor del código hash de este bitset. |
| 14 |
boolean intersects(BitSet bitSet) Devuelve true si hay un bit establecido a true en el BitSet especificado que también esté establecido a true en este BitSet. |
| 15 |
boolean isEmpty( ) Devuelve true si este BitSet no contiene ningún bit establecido a true. |
| 16 |
int length( ) Devuelve el "tamaño lógico" de este BitSet: el índice del bit más alto establecido en el BitSet más 1. |
| 17 |
int nextClearBit(int startIndex) Devuelve el índice del primer bit establecido a false que ocurre en el índice inicial especificado o después de este. |
| 18 |
int nextSetBit(int startIndex) Devuelve el índice del primer bit establecido a true que ocurre en el índice inicial especificado o después de este. |
| 19 |
void or(BitSet bitSet) Realiza una operación OR lógica entre este bitset y el bitset del argumento. |
| 20 |
void set(int index) Establece el bit en el índice especificado a true. |
| 21 |
void set(int index, boolean v) Establece el bit en el índice especificado al valor especificado. |
| 22 |
void set(int startIndex, int endIndex) Establece los bits desde el fromIndex especificado (incluido) hasta el toIndex especificado (excluido) a true. |
| 23 |
void set(int startIndex, int endIndex, boolean v) Establece los bits desde el fromIndex especificado (incluido) hasta el toIndex especificado (excluido) al valor especificado. |
| 24 |
int size( ) Devuelve el número de bits de espacio realmente utilizado por este BitSet al representar valores de bits. |
| 25 |
String toString( ) Devuelve la representación en cadena de este bitset. |
| 26 |
void xor(BitSet bitSet) Realiza una operación XOR lógica entre este bitset y el bitset del argumento. |
Ejemplo
El siguiente programa ilustra varios métodos compatibles con esta estructura de datos:
Ejemplo
import java.util.BitSet;
public class BitSetDemo {
public static void main(String args[]) {
BitSet bits1 = new BitSet(16);
BitSet bits2 = new BitSet(16);
// set some bits
for(int i=0; i<16; i++) {
if((i%2) == 0) bits1.set(i);
if((i%5) != 0) bits2.set(i);
}
System.out.println("Initial pattern in bits1: ");
System.out.println(bits1);
System.out.println("\nInitial pattern in bits2: ");
System.out.println(bits2);
// AND bits
bits2.and(bits1);
System.out.println("\nbits2 AND bits1: ");
System.out.println(bits2);
// OR bits
bits2.or(bits1);
System.out.println("\nbits2 OR bits1: ");
System.out.println(bits2);
// XOR bits
bits2.xor(bits1);
System.out.println("\nbits2 XOR bits1: ");
System.out.println(bits2);
}
}
El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:
Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}
bits2 AND bits1:
{2, 4, 6, 8, 12, 14}
bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
bits2 XOR bits1:
{}
Otras extensiones
Estructuras de datos en Java