org.apache.lucene.util

## 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. Unlike `OpenBitSet` this bit set does not auto-expand, cannot handle long index, and does not have fastXX/XX variants (just X).

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.apache.lucene.util.Bits

`Bits.MatchAllBits, Bits.MatchNoBits`

### Field Summary

### Fields inherited from class org.apache.lucene.search.DocIdSet

`EMPTY_DOCIDSET`

### Fields inherited from interface org.apache.lucene.util.Bits

`EMPTY_ARRAY`

### Constructor Summary

Constructors
Constructor and Description
`FixedBitSet(FixedBitSet other)` Makes full copy.
`FixedBitSet(int numBits)`
`FixedBitSet(long[] storedBits, int numBits)`

### Method Summary

Methods
`void` `and(DocIdSetIterator iter)` Does in-place AND of the bits provided by the iterator.
`void` `and(FixedBitSet other)` this = this AND other
`void` `andNot(DocIdSetIterator iter)` Does in-place AND NOT of the bits provided by the iterator.
`void` `andNot(FixedBitSet other)` this = this AND NOT other
`Bits` `bits()` Optionally provides a `Bits` interface for random access to matching documents.
`static int` `bits2words(int numBits)` returns the number of 64 bit words it would take to hold numBits
`int` `cardinality()` Returns number of set bits.
`void` `clear(int index)`
`void` `clear(int startIndex, int endIndex)` Clears a range of bits.
`FixedBitSet` `clone()`
`boolean` `equals(Object o)` returns true if both sets have the same bits set
`void` `flip(int startIndex, int endIndex)` Flips a range of bits
`boolean` `get(int index)` Returns the value of the bit with the specified `index`.
`boolean` `getAndClear(int index)`
`boolean` `getAndSet(int index)`
`long[]` `getBits()` Expert.
`int` `hashCode()`
`boolean` `isCacheable()` This DocIdSet implementation is cacheable.
`DocIdSetIterator` `iterator()` Provides a `DocIdSetIterator` to access the set.
`int` `length()` Returns the number of bits in this set
`int` `nextSetBit(int index)` Returns the index of the first set bit starting at the index specified.
`void` `or(DocIdSetIterator iter)` Does in-place OR of the bits provided by the iterator.
`void` `or(FixedBitSet other)` this = this OR other
`int` `prevSetBit(int index)` Returns the index of the last set bit before or on the index specified.
`void` `set(int index)`
`void` `set(int startIndex, int endIndex)` Sets a range of bits

### Methods inherited from class java.lang.Object

`finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### FixedBitSet

    public FixedBitSet(int numBits)

#### FixedBitSet

    public FixedBitSet(long[] storedBits,
               int numBits)

#### FixedBitSet

    public FixedBitSet(FixedBitSet other)

Makes full copy.

### Method Detail

#### bits2words

    public static int bits2words(int numBits)

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

#### iterator

    public DocIdSetIterator iterator()

Description copied from class: `DocIdSet`
Provides a `DocIdSetIterator` to access the set. This implementation can return `null` or `DocIdSet.EMPTY_DOCIDSET.iterator()` 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

#### and

    public void and(DocIdSetIterator iter)
             throws IOException

Does in-place AND of the bits provided by the iterator.

Throws:
  `IOException`

#### 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`