# Java BitSet HackerRank Solution

**Problem Statement**

Java’s BitSet class implements a vector of bit values (i.e.: () or ()) that grows as needed, allowing us to easily manipulate bits while optimizing space (when compared to other collections). Any element having a bit value is called a *set bit*.

Given BitSets, and, of a size where all bits in both BitSets are initialized to, perform a series of operations. After each operation, print the number of *set bits* in the respective BitSets as two space-separated integers on a new line.

**Solution**

```
package hackerrank.corejava.dataStructures;
import java.util.BitSet;
import java.util.Scanner;
public class BitSetExample {
public static void main(String[] args) {
Scanner get = new Scanner(System.in);
int N = get.nextInt();
int M = get.nextInt();
BitSet B1 = new BitSet(N);
BitSet B2 = new BitSet(N);
BitSet[] bitset = new BitSet[3];
bitset[1] = B1;
bitset[2] = B2;
while ( M-- > 0 ) {
String op = get.next();
int x = get.nextInt();
int y = get.nextInt();
switch (op) {
case "AND" -> bitset[x].and(bitset[y]);
case "OR" -> bitset[x].or(bitset[y]);
case "XOR" -> bitset[x].xor(bitset[y]);
case "FLIP" -> bitset[x].flip(y);
case "SET" -> bitset[x].set(y);
}
System.out.printf("%d %d%n", B1.cardinality(), B2.cardinality());
}
}
}
```