Class ImmutableBitSet

java.lang.Object
com.googlecode.javaewah.datastructure.ImmutableBitSet
All Implemented Interfaces:
Cloneable, Iterable<Integer>

public class ImmutableBitSet extends Object implements Cloneable, Iterable<Integer>
This is an immutable version of the BitSet class in this same package. It is meant to be used with memory-file mapping.
final FileOutputStream fos = new FileOutputStream(tmpfile);
        BitSet Bitmap = BitSet.bitmapOf(0, 2, 55, 64, 512);
        Bitmap.serialize(new DataOutputStream(fos));
                RandomAccessFile memoryMappedFile = new RandomAccessFile(tmpfile, "r");
                ByteBuffer bb = memoryMappedFile.getChannel().map(
                                FileChannel.MapMode.READ_ONLY, 0, totalcount);
                ImmutableBitSet mapped = new ImmutableBitSet(bb.asLongBuffer());
  • Constructor Details

    • ImmutableBitSet

      public ImmutableBitSet(LongBuffer bs)
      Construct a ImmutableBitSet from the content of the LongBuffer which should have been initialized with BitSet.serialize (from the BitSet in this same package). The input is not modified.
      Parameters:
      bs - the data source
  • Method Details

    • asBitSet

      public BitSet asBitSet()
      Get a copy of this ImmutableBitSet as a mutable BitSet.
      Returns:
      a copy
    • cardinality

      public int cardinality()
      Compute the number of bits set to 1
      Returns:
      the number of bits
    • clone

      public ImmutableBitSet clone()
      Overrides:
      clone in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • empty

      public boolean empty()
      Check whether a bitset contains a set bit.
      Returns:
      true if no set bit is found
    • get

      public boolean get(int i)
      get value of bit i
      Parameters:
      i - index
      Returns:
      value of the bit
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • intIterator

      public IntIterator intIterator()
      Iterate over the set bits
      Returns:
      an iterator
    • iterator

      public Iterator<Integer> iterator()
      Specified by:
      iterator in interface Iterable<Integer>
    • intersects

      public boolean intersects(BitSet bs)
      Checks whether two bitsets intersect.
      Parameters:
      bs - other bitset
      Returns:
      true if they have a non-empty intersection (result of AND)
    • nextSetBit

      public int nextSetBit(int i)
      Usage: for(int i=bs.nextSetBit(0); i>=0; i=bs.nextSetBit(i+1)) { operate on index i here }
      Parameters:
      i - current set bit
      Returns:
      next set bit or -1
    • nextUnsetBit

      public int nextUnsetBit(int i)
      Usage: for(int i=bs.nextUnsetBit(0); i>=0; i=bs.nextUnsetBit(i+1)) { operate on index i here }
      Parameters:
      i - current unset bit
      Returns:
      next unset bit or -1
    • size

      public int size()
      Query the size
      Returns:
      the size in bits.
    • unsetIntIterator

      public IntIterator unsetIntIterator()
      Iterate over the unset bits
      Returns:
      an iterator
    • getNumberOfWords

      public int getNumberOfWords()
    • getWord

      public long getWord(int index)
    • toString

      public String toString()
      Overrides:
      toString in class Object