Clase Java Bitset

Java 数据结构Estructuras de datos en Java


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:
{}

Java 数据结构Estructuras de datos en Java

Otras extensiones