Class FixedBitSet

java.lang.Object
org.apache.lucene.search.DocIdSet
org.apache.lucene.util.FixedBitSet
All Implemented Interfaces:
Bits

public final class FixedBitSet extends DocIdSet implements Bits
BitSet of fixed length (numBits), backed by accessible (getBits()) long[], accessed with an int index, implementing Bits and DocIdSet. If you need to manage more than 2.1B bits, use LongBitSet.
  • Constructor Details

    • FixedBitSet

      public FixedBitSet(int numBits)
    • FixedBitSet

      public FixedBitSet(long[] storedBits, int numBits)
  • Method Details

    • ensureCapacity

      public static FixedBitSet ensureCapacity(FixedBitSet bits, int numBits)
      If the given FixedBitSet is large enough to hold numBits, returns the given bits, otherwise returns a new FixedBitSet which can hold the requested number of bits.

      NOTE: the returned bitset reuses the underlying long[] of the given bits if possible. Also, calling length() on the returned bits may return a value greater than numBits.

    • bits2words

      public static int bits2words(int numBits)
      returns the number of 64 bit words it would take to hold numBits
    • intersectionCount

      public static long intersectionCount(FixedBitSet a, FixedBitSet b)
      Returns the popcount or cardinality of the intersection of the two sets. Neither set is modified.
    • unionCount

      public static long unionCount(FixedBitSet a, FixedBitSet b)
      Returns the popcount or cardinality of the union of the two sets. Neither set is modified.
    • andNotCount

      public static long andNotCount(FixedBitSet a, FixedBitSet b)
      Returns the popcount or cardinality of "a and not b" or "intersection(a, not(b))". Neither set is modified.
    • iterator

      public DocIdSetIterator iterator()
      Description copied from class: DocIdSet
      Provides a DocIdSetIterator to access the set. This implementation can return null if there are no docs that match.
      Specified by:
      iterator in class DocIdSet
    • bits

      public Bits bits()
      Description copied from class: DocIdSet
      Optionally provides a Bits interface for random access to matching documents.
      Overrides:
      bits in class DocIdSet
      Returns:
      null, if this DocIdSet does not support random access. In contrast to DocIdSet.iterator(), a return value of null does not imply that no documents match the filter! The default implementation does not provide random access, so you only need to implement this method if your DocIdSet can guarantee random access to every docid in O(1) time without external disk access (as Bits interface cannot throw IOException). This is generally true for bit sets like FixedBitSet, which return itself if they are used as DocIdSet.
    • length

      public int length()
      Description copied from interface: Bits
      Returns the number of bits in this set
      Specified by:
      length in interface Bits
    • isCacheable

      public boolean isCacheable()
      This DocIdSet implementation is cacheable.
      Overrides:
      isCacheable in class DocIdSet
    • getBits

      public long[] getBits()
      Expert.
    • cardinality

      public int cardinality()
      Returns number of set bits. NOTE: this visits every long in the backing bits array, and the result is not internally cached!
    • get

      public boolean get(int index)
      Description copied from interface: Bits
      Returns the value of the bit with the specified index.
      Specified by:
      get in interface Bits
      Parameters:
      index - index, should be non-negative and < Bits.length(). The result of passing negative or out of bounds values is undefined by this interface, just don't do it!
      Returns:
      true if the bit is set, false otherwise.
    • set

      public void set(int index)
    • getAndSet

      public boolean getAndSet(int index)
    • clear

      public void clear(int index)
    • getAndClear

      public boolean getAndClear(int index)
    • 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.
    • prevSetBit

      public int prevSetBit(int index)
      Returns the index of the last set bit before or on the index specified. -1 is returned if there are no more set bits.
    • or

      public void or(DocIdSetIterator iter) throws IOException
      Does in-place OR of the bits provided by the iterator.
      Throws:
      IOException
    • or

      public void or(FixedBitSet other)
      this = this OR other
    • xor

      public void xor(FixedBitSet other)
      this = this XOR other
    • xor

      public void xor(DocIdSetIterator iter) throws IOException
      Does in-place XOR of the bits provided by the iterator.
      Throws:
      IOException
    • and

      public void and(DocIdSetIterator iter) throws IOException
      Does in-place AND of the bits provided by the iterator.
      Throws:
      IOException
    • intersects

      public boolean intersects(FixedBitSet other)
      returns true if the sets have any elements in common
    • and

      public void and(FixedBitSet other)
      this = this AND other
    • andNot

      public void andNot(DocIdSetIterator iter) throws IOException
      Does in-place AND NOT of the bits provided by the iterator.
      Throws:
      IOException
    • andNot

      public void andNot(FixedBitSet other)
      this = this AND NOT other
    • flip

      public void flip(int startIndex, int endIndex)
      Flips a range of bits
      Parameters:
      startIndex - lower index
      endIndex - one-past the last bit to flip
    • set

      public void set(int startIndex, int endIndex)
      Sets a range of bits
      Parameters:
      startIndex - lower index
      endIndex - one-past the last bit to set
    • clear

      public void clear(int startIndex, int endIndex)
      Clears a range of bits.
      Parameters:
      startIndex - lower index
      endIndex - one-past the last bit to clear
    • clone

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

      public boolean equals(Object o)
      returns true if both sets have the same bits set
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object