
- Java Data Structures Resources
- Java Data Structures - Quick Guide
- Java Data Structures - Resources
- Java Data Structures - Discussion
Java Data Structures - Bitset Class
The BitSet class creates a special type of array that holds bit values. It can increase in size as needed this makes it similar to a vector of bits. The indices of a BitSet are represented by the non-negative values and Each index holds a boolean value.
The BitSet Class in Java
The BitSet class implements a group of bits or flags that can be set and cleared individually. This class is very useful in cases where you need to keep up with a set of Boolean values; you just assign a bit to each value and set or clear it as appropriate. The BitSet array can increase in size as needed. This makes it similar to a vector of bits.
The BitSet defines the following two constructors.
Sr.No. | Constructor and Description |
---|---|
1 |
BitSet( ) This constructor creates a default object. |
2 |
BitSet(int size) This constructor allows you to specify its initial size, i.e., the number of bits that it can hold. All bits are initialized to zero. |
BitSet implements the Cloneable interface and defines the methods listed in the following table
Sr.No. | Method and Description |
---|---|
1 |
void and(BitSet bitSet) ANDs the contents of the invoking BitSet object with those specified by bitSet. The result is placed into the invoking object. |
2 |
void andNot(BitSet bitSet) For each 1 bit in bitSet, the corresponding bit in the invoking BitSet is cleared. |
3 |
int cardinality( ) Returns the number of set bits in the invoking object. |
4 |
void clear( ) Zeros all bits. |
5 |
void clear(int index) Zeros the bit specified by index. |
6 |
void clear(int startIndex, int endIndex) Zeros the bits from startIndex to endIndex. |
7 |
Object clone( ) Duplicates the invoking BitSet object. |
8 |
boolean equals(Object bitSet) Returns true if the invoking bit set is equivalent to the one passed in bitSet. Otherwise, the method returns false. |
9 |
void flip(int index) Reverses the bit specified by the index. |
10 |
void flip(int startIndex, int endIndex) Reverses the bits from startIndex to endIndex. |
11 |
boolean get(int index) Returns the current state of the bit at the specified index. |
12 |
BitSet get(int startIndex, int endIndex) Returns a BitSet that consists of the bits from startIndex to endIndex. The invoking object is not changed. |
13 |
int hashCode( ) Returns the hash code for the invoking object. |
14 |
boolean intersects(BitSet bitSet) Returns true if at least one pair of corresponding bits within the invoking object and bitSet are 1. |
15 |
boolean isEmpty( ) Returns true if all bits in the invoking object are zero. |
16 |
int length( ) Returns the number of bits required to hold the contents of the invoking BitSet. This value is determined by the location of the last 1 bit. |
17 |
int nextClearBit(int startIndex) Returns the index of the next cleared bit, (that is, the next zero bit), starting from the index specified by startIndex. |
18 |
int nextSetBit(int startIndex) Returns the index of the next set bit (that is, the next 1 bit), starting from the index specified by startIndex. If no bit is set, -1 is returned. |
19 |
void or(BitSet bitSet) ORs the contents of the invoking BitSet object with that specified by bitSet. The result is placed into the invoking object. |
20 |
void set(int index) Sets the bit specified by index. |
21 |
void set(int index, boolean v) Sets the bit specified by index to the value passed in v. True sets the bit, false clears the bit. |
22 |
void set(int startIndex, int endIndex) Sets the bits from startIndex to endIndex. |
23 |
void set(int startIndex, int endIndex, boolean v) Sets the bits from startIndex to endIndex, to the value passed in v. true sets the bits, false clears the bits. |
24 |
int size( ) Returns the number of bits in the invoking BitSet object. |
25 |
String toString( ) Returns the string equivalent of the invoking BitSet object. |
26 |
void xor(BitSet bitSet) XORs the contents of the invoking BitSet object with that specified by bitSet. The result is placed into the invoking object. |
Example
The following program illustrates several of the methods supported by this 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("\n Initial 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); } }
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: {}