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
Método nextSetBit() :
este método en BitSet Class se usa para devolver el índice del primer bit que se establece en verdadero, que ocurre en o después del índice de inicio especificado. Si no existe tal bit, se devuelve -1.
Sintaxis:
public int nextSetBit(int fromIndex)
Parámetros: este método toma un parámetro obligatorio deIndex , que es el índice desde el que comenzar a verificar (inclusive) el siguiente bit verdadero.
Valor devuelto: este método devuelve el índice del siguiente bit establecido, o -1 si no existe tal bit
Excepción: este método genera una excepción IndexOutOfBoundsException si el índice especificado es negativo.
Nota: para iterar sobre los bits verdaderos en un BitSet, use el siguiente bucle:
for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i+1)) { // operate on index i here }
Ejemplo 1: para mostrar la implementación de la función nextSetBit():
// Java program illustrating Bitset // nextSetBit() 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 nextSetBit() on bitsets System.out.println(bs1.nextSetBit(2)); System.out.println(bs2.nextSetBit(0)); System.out.println(bs3.nextSetBit(3)); } }
bs1 : {0, 1, 2, 4} bs2 : {1, 2, 3, 4, 5, 6, 12} bs3 : {} 2 1 -1
Ejemplo 2: Para mostrar IndexOutOfBoundException:
// Java program illustrating Bitset // nextSetBit() 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(); /* 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); try { // Passing -1 as parameter System.out.println(bs1.nextSetBit(-1)); } catch (Exception e) { System.out.println("Exception when " + "negative index is passed " + "as parameter : " + e); } } }
bs1 : {0, 1, 2, 4} bs2 : {1, 2, 3, 4, 5, 6, 12} Exception when negative index is passed as parameter : java.lang.IndexOutOfBoundsException: fromIndex < 0: -1