Java BitSet Class
Introduction
The Java BitSet class creates a special type of array that holds bit values. The BitSet array can increase in size as needed. This makes it similar to a vector of bits. This is a legacy class but it has been completely re-engineered in Java 2, version 1.4.
The Java BitSet class implements a vector of bits that grows as needed.Following are the important points about BitSet −
A BitSet is not safe for multithreaded use without external synchronization.
All bits in the set initially have the value false.
Passing a null parameter to any of the methods in a BitSet will result in a NullPointerException.
Class declaration
Following is the declaration for java.util.BitSet class −
public class BitSet extends Object implements Cloneable, Serializable
Class constructors
| Sr.No. | Constructor & Description |
|---|---|
| 1 | BitSet() This constructor creates a new bit set. |
| 2 | BitSet(int nbits) This constructor creates a bit set whose initial size is large enough to explicitly represent bits with indices in the range 0 through nbits-1. |
Class methods
| Sr.No. | Method & Description |
|---|---|
| 1 | void and(BitSet set)
This method performs a logical AND of this target bit set with the argument bit set. |
| 2 | void andNot(BitSet set)
This method clears all of the bits in this BitSet whose corresponding bit is set in the specified BitSet. |
| 3 | int cardinality()
This method returns the number of bits set to true in this BitSet. |
| 4 | void clear()
This method sets all of the bits in this BitSet to false. |
| 5 | Object clone()
This method clones this BitSet and produces a new BitSet that is equal to it. |
| 6 | boolean equals(Object obj)
This method compares this object against the specified object. |
| 7 | void flip(int bitIndex)
This method sets the bit at the specified index to the complement of its current value. |
| 8 | boolean get(int bitIndex)
This method returns the value of the bit with the specified index. |
| 9 | int hashCode()
This method returns the value of the bit with the specified index. |
| 10 | boolean intersects(BitSet set)
This method returns true if the specified BitSet has any bits set to true that are also set to true in this BitSet. |
| 11 | boolean isEmpty()
This method returns true if this BitSet contains no bits that are set to true. |
| 12 | int length()
This method returns the "logical size" of this BitSet: the index of the highest set bit in the BitSet plus one. |
| 13 | int nextClearBit(int fromIndex)
This method returns the index of the first bit that is set to false that occurs on or after the specified starting index. |
| 14 | int nextSetBit(int fromIndex)
This method returns the index of the first bit that is set to true that occurs on or after the specified starting index. |
| 15 | void or(BitSet set)
This method performs a logical OR of this bit set with the bit set argument. |
| 16 | int previousClearBit(int fromIndex)
This method returns the index of the first bit that is set to false that occurs on or before the specified starting index. |
| 17 | int previousSetBit(int fromIndex)
This method returns the index of the first bit that is set to true that occurs on or after the specified starting index. |
| 18 | void set(int bitIndex)
This method sets the bit at the specified index to true. |
| 19 | int size()
This method returns the number of bits of space actually in use by this BitSet to represent bit values. |
| 20 | IntStream stream()
This method returns a stream of indices for which this BitSet contains a bit in the set state. |
| 21 | byte[] toByteArray()
This method returns a new bit set containing all the bits in the given byte array. |
| 22 | long[] toLongArray()
This method returns a new long array containing all the bits in this bit set. |
| 23 | String toString()
This method returns a string representation of this bit set. |
| 24 | static BitSet valueOf(byte[] bytes)
This method returns a new bit set containing all the bits in the given byte array. |
| 25 | void xor(BitSet set)
This method performs a logical XOR of this bit set with the bit set argument. |
Methods inherited
This class inherits methods from the following classes −
- java.util.Object
Creating a BitSet and Performing Operations on BitSets Example
The following program illustrates several of the methods supported by BitSet data structure −
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);
}
}
This will produce the following result −
Output
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:
{}