BitSet es una clase definida en el paquete java.util. Crea una array de bits representados por valores booleanos.
Requisito previo: Java BitSet | Serie 1
Bitset.previousSetBit()
Este método se usa para encontrar si hay bits verdaderos que ocurren en o antes del índice de inicio especificado.
Esta función devuelve el índice del bit más cercano que se establece en verdadero que ocurre en o antes del índice de inicio especificado. Si no existe tal bit, o si se proporciona -1 como índice inicial, se devuelve -1.
Sintaxis:
public int previousSetBit(int fromIndex)
Parámetros: este método toma un parámetro obligatorio fromIndex , que es el índice desde el que comenzar a verificar (inclusive) el bit verdadero que ocurre en o antes de este fromIndex.
Valor devuelto: este método devuelve el índice del bit establecido anteriormente que se produce en o antes del índice especificado, o -1 si no existe tal bit.
Excepción: este método genera una excepción IndexOutOfBoundsException si el índice especificado es inferior a -1.
Nota: para iterar sobre los bits verdaderos en un BitSet, use el siguiente bucle:
for (int i = bs.length(); (i = bs.previousSetBit(i-1)) >= 0; ) { // operate on index i here }
Los siguientes programas ilustran el método anteriorSetBit():
Ejemplo 1: Para mostrar la implementación de la función anteriorSetBit():
// Java program illustrating Bitset // previousSetBit() function. import java.util.*; public class GFG { public static void main(String[] args) { // Constructors of BitSet class BitSet bs1 = new BitSet(); BitSet bs2 = new BitSet(); BitSet bs3 = new BitSet(); /* assigning values to set1*/ bs1.set(0); bs1.set(1); bs1.set(2); bs1.set(4); // assign values to bs2 bs2.set(4); bs2.set(6); bs2.set(5); bs2.set(1); bs2.set(2); bs2.set(3); bs2.set(12); // Printing the 2 Bitsets System.out.println("bs1 : " + bs1); System.out.println("bs2 : " + bs2); System.out.println("bs3 : " + bs3); // Performing length() on bitsets System.out.println("Previous Set Bit of bs1 " + bs1.previousSetBit(2)); System.out.println("Previous Set Bit of bs2 " + bs2.previousSetBit(1)); System.out.println("Previous Set Bit of bs3 " + bs3.previousSetBit(3)); } }
bs1 : {0, 1, 2, 4} bs2 : {1, 2, 3, 4, 5, 6, 12} bs3 : {} Previous Set Bit of bs1 2 Previous Set Bit of bs2 1 Previous Set Bit of bs3 -1
Ejemplo 2: Para mostrar IndexOutOfBoundException:
// Java program illustrating Bitset // previousSetBit() function. import java.util.*; public class GFG { public static void main(String[] args) { // Constructors of BitSet class BitSet bs1 = new BitSet(); // assigning values to set1 bs1.set(0); bs1.set(1); bs1.set(2); bs1.set(4); // Printing the Bitset System.out.println("bs1 : " + bs1); try { // Passing -2 as parameter System.out.println(bs1.previousSetBit(-2)); } catch (Exception e) { System.out.println("Exception when " + "index less than -1 is passed " + "as parameter : " + e); } } }
bs1 : {0, 1, 2, 4} Exception when index less than -1 is passed as parameter : java.lang.IndexOutOfBoundsException: fromIndex < -1: -2