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:
{}
Advertisements