## org.apache.cassandra.utils.obs
Class OpenBitSet

    java.lang.Object
      org.apache.cassandra.utils.obs.OpenBitSet

All Implemented Interfaces:
  java.io.Serializable

    public class OpenBitSet

extends java.lang.Object
implements java.io.Serializable

An "open" BitSet implementation that allows direct access to the arrays of words storing the bits. Derived from Lucene's OpenBitSet, but with a paged backing array (see bits delaration, below).

Unlike java.util.bitset, the fact that bits are packed into an array of longs is part of the interface. This allows efficient implementation of other algorithms by someone other than the author. It also allows one to efficiently implement alternate serialization or interchange formats.

`OpenBitSet` is faster than `java.util.BitSet` in most operations and *much* faster at calculating cardinality of sets and results of set operations. It can also handle sets of larger cardinality (up to 64 * 2**32-1)

The goals of `OpenBitSet` are the fastest implementation possible, and maximum code reuse. Extra safety and encapsulation may always be built on top, but if that's built in, the cost can never be removed (and hence people re-implement their own version in order to get better performance). If you want a "safe", totally encapsulated (and slower and limited) BitSet class, use `java.util.BitSet`.

See Also:
  Serialized Form

Constructor Summary
`OpenBitSet()`
`OpenBitSet(java.util.BitSet bits)` Contructs an OpenBitset from a BitSet
`OpenBitSet(long numBits)` Constructs an OpenBitSet large enough to hold numBits.

Method Summary
`void` `and(OpenBitSet other)`
`static int` `bits2words(long numBits)` returns the number of 64 bit words it would take to hold numBits
`long` `capacity()` Returns the current capacity in bits (1 greater than the index of the last bit)
`long` `cardinality()`
`void` `clear(int index)` clears a bit.
`void` `clear(int startIndex, int endIndex)` Clears a range of bits.
`void` `clear(long index)` clears a bit.
`void` `clear(long startIndex, long endIndex)` Clears a range of bits.
`boolean` `equals(java.lang.Object o)` returns true if both sets have the same bits set
`void` `flip(int index)` flips a bit.
`void` `flip(long index)` flips a bit.
`boolean` `flipAndGet(int index)` flips a bit and returns the resulting bit value.
`boolean` `flipAndGet(long index)` flips a bit and returns the resulting bit value.
`boolean` `get(int index)` Returns true or false for the specified bit index.
`boolean` `get(long index)` Returns true or false for the specified bit index.
`boolean` `getAndSet(int index)` Sets a bit and returns the previous value.
`boolean` `getAndSet(long index)` Sets a bit and returns the previous value.
`int` `getBit(int index)` returns 1 if the bit is set, 0 if not.
`int` `getNumWords()` Expert: gets the number of longs in the array that are in use
`long[]` `getPage(int pageIdx)`
`int` `getPageCount()`
`int` `getPageSize()`
`int` `hashCode()`
`void` `intersect(OpenBitSet other)` this = this AND other
`boolean` `isEmpty()` Returns true if there are no set bits
`long` `length()`
`int` `nextSetBit(int index)` Returns the index of the first set bit starting at the index specified.
`long` `nextSetBit(long index)` Returns the index of the first set bit starting at the index specified.
`void` `set(int index)` Sets the bit at the specified index.
`void` `set(long index)` Sets the bit at the specified index.
`long` `size()` Returns the current capacity of this set.
`void` `trimTrailingZeros()` Lowers numWords, the number of words in use, by checking for trailing zero words.

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### OpenBitSet

    public OpenBitSet(long numBits)

  Constructs an OpenBitSet large enough to hold numBits.

  Parameters:
    `numBits` -

### OpenBitSet

    public OpenBitSet()

### OpenBitSet

    public OpenBitSet(java.util.BitSet bits)

  Contructs an OpenBitset from a BitSet

Method Detail

### getPageSize

    public int getPageSize()

  Returns:
    the pageSize

### getPageCount

    public int getPageCount()

### getPage

    public long[] getPage(int pageIdx)

### capacity

    public long capacity()

  Returns the current capacity in bits (1 greater than the index of the last bit)

### size

    public long size()

  Returns the current capacity of this set. Included for compatibility. This is *not* equal to `cardinality()`

### length

    public long length()

### isEmpty

    public boolean isEmpty()

  Returns true if there are no set bits

### getNumWords

    public int getNumWords()

  Expert: gets the number of longs in the array that are in use

### get

    public boolean get(int index)

  Returns true or false for the specified bit index. The index should be less than the OpenBitSet size

### get

    public boolean get(long index)

  Returns true or false for the specified bit index. The index should be less than the OpenBitSet size.

### getBit

    public int getBit(int index)

  returns 1 if the bit is set, 0 if not. The index should be less than the OpenBitSet size

### set

    public void set(long index)

  Sets the bit at the specified index. The index should be less than the OpenBitSet size.

### set

    public void set(int index)

  Sets the bit at the specified index. The index should be less than the OpenBitSet size.

### clear

    public void clear(int index)

  clears a bit. The index should be less than the OpenBitSet size.

### clear

    public void clear(long index)

  clears a bit. The index should be less than the OpenBitSet size.

### clear

    public void clear(int startIndex,
                      int endIndex)

  Clears a range of bits. Clearing past the end does not change the size of the set.

  Parameters:
    `startIndex` - lower index
    `endIndex` - one-past the last bit to clear

### clear

    public void clear(long startIndex,
                      long endIndex)

  Clears a range of bits. Clearing past the end does not change the size of the set.

  Parameters:
    `startIndex` - lower index
    `endIndex` - one-past the last bit to clear

### getAndSet

    public boolean getAndSet(int index)

  Sets a bit and returns the previous value. The index should be less than the OpenBitSet size.

### getAndSet

    public boolean getAndSet(long index)

  Sets a bit and returns the previous value. The index should be less than the OpenBitSet size.

### flip

    public void flip(int index)

  flips a bit. The index should be less than the OpenBitSet size.

### flip

    public void flip(long index)

  flips a bit. The index should be less than the OpenBitSet size.

### flipAndGet

    public boolean flipAndGet(int index)

  flips a bit and returns the resulting bit value. The index should be less than the OpenBitSet size.

### flipAndGet

    public boolean flipAndGet(long index)

  flips a bit and returns the resulting bit value. The index should be less than the OpenBitSet size.

### cardinality

    public long cardinality()

  Returns:
    the number of set bits

### nextSetBit

    public int nextSetBit(int index)

  Returns the index of the first set bit starting at the index specified. -1 is returned if there are no more set bits.

### nextSetBit

    public long nextSetBit(long index)

  Returns the index of the first set bit starting at the index specified. -1 is returned if there are no more set bits.

### intersect

    public void intersect(OpenBitSet other)

  this = this AND other

### and

    public void and(OpenBitSet other)

### trimTrailingZeros

    public void trimTrailingZeros()

  Lowers numWords, the number of words in use, by checking for trailing zero words.

### bits2words

    public static int bits2words(long numBits)

  returns the number of 64 bit words it would take to hold numBits

### equals

    public boolean equals(java.lang.Object o)

  returns true if both sets have the same bits set

  Overrides:
    `equals` in class `java.lang.Object`

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `java.lang.Object`

Copyright © 2013 The Apache Software Foundation