# Package org.apache.lucene.util

Some utility classes.

See: Description

Interface Summary
Interface | Description
--- | ---
Attribute | Base interface for attributes.
AttributeReflector | This interface is used to reflect contents of `AttributeSource` or `AttributeImpl`.
Bits | Interface for Bitset-like structures.
BytesRefIterator | A simple iterator interface for `BytesRef` iteration.
MutableBits | Extension of Bits for live documents.
NamedSPILoader.NamedSPI | Interface to support `NamedSPILoader.lookup(String)` by name.
RollingBuffer.Resettable | Implement to reset an instance

Class Summary
Class | Description
--- | ---
ArrayUtil | Methods for manipulating arrays.
AttributeImpl | Base class for Attributes that can be added to a `AttributeSource`.
AttributeSource | An AttributeSource contains a list of different `AttributeImpl`s, and methods to add and get them.
AttributeSource.AttributeFactory | An AttributeFactory creates instances of `AttributeImpl`s.
AttributeSource.State | This class holds the state of an AttributeSource.
Bits.MatchAllBits | Bits impl of the specified length with all bits set.
Bits.MatchNoBits | Bits impl of the specified length with no bits set.
BitUtil | A variety of high efficiency bit twiddling routines.
ByteBlockPool | Class that Posting and PostingVector use to write byte streams into shared fixed-size byte[] arrays.
ByteBlockPool.Allocator | Abstract class for allocating and freeing byte blocks.
ByteBlockPool.DirectAllocator | A simple `ByteBlockPool.Allocator` that never recycles.
ByteBlockPool.DirectTrackingAllocator | A simple `ByteBlockPool.Allocator` that never recycles, but tracks how much total RAM is in use.
BytesRef | Represents byte[], as a slice (offset + length) into an existing byte[].
BytesRefHash | `BytesRefHash` is a special purpose hash-map like data-structure optimized for `BytesRef` instances.
BytesRefHash.BytesStartArray | Manages allocation of the per-term addresses.
BytesRefHash.DirectBytesStartArray | A simple `BytesRefHash.BytesStartArray` that tracks memory allocation using a private `AtomicLong` instance.
CharsRef | Represents char[], as a slice (offset + length) into an existing char[].
CloseableThreadLocal<T> | Java's builtin ThreadLocal has a serious flaw: it can take an arbitrarily long amount of time to dereference the things you had stored in it, even once the ThreadLocal instance itself is no longer referenced.
CollectionUtil | Methods for manipulating (sorting) collections.
CommandLineUtil | Class containing some useful methods used by command line tools
Constants | Some useful constants.
Counter | Simple counter class
DocIdBitSet | Simple DocIdSet and DocIdSetIterator backed by a BitSet
DoubleBarrelLRUCache<K extends DoubleBarrelLRUCache.CloneableKey,V> | Simple concurrent LRU cache, using a "double barrel" approach where two ConcurrentHashMaps record entries.
DoubleBarrelLRUCache.CloneableKey | Object providing clone(); the key class must subclass this.
FieldCacheSanityChecker | Provides methods for sanity checking that entries in the FieldCache are not wasteful or inconsistent.
FieldCacheSanityChecker.Insanity | Simple container for a collection of related CacheEntry objects that in conjunction with each other represent some "insane" usage of the FieldCache.
FieldCacheSanityChecker.InsanityType | An Enumeration of the different types of "insane" behavior that may be detected in a FieldCache.
FilterIterator<T> | An `Iterator` implementation that filters elements with a boolean predicate.
FixedBitSet | BitSet of fixed length (numBits), backed by accessible (`FixedBitSet.getBits()`) long[], accessed with an int index, implementing Bits and DocIdSet.
IndexableBinaryStringTools | Deprecated Implement `TermToBytesRefAttribute` and store bytes directly instead.
InfoStream | Debugging API for Lucene classes such as `IndexWriter` and `SegmentInfos`.
IntBlockPool | A pool for int blocks similar to `ByteBlockPool`
IntBlockPool.Allocator | Abstract class for allocating and freeing int blocks.
IntBlockPool.DirectAllocator | A simple `IntBlockPool.Allocator` that never recycles.
IntBlockPool.SliceReader | A `IntBlockPool.SliceReader` that can read int slices written by a `IntBlockPool.SliceWriter`
IntBlockPool.SliceWriter | A `IntBlockPool.SliceWriter` that allows to write multiple integer slices into a given `IntBlockPool`.
IntsRef | Represents int[], as a slice (offset + length) into an existing int[].
IOUtils | This class emulates the new Java 7 "Try-With-Resources" statement.
LongsRef | Represents long[], as a slice (offset + length) into an existing long[].
MapOfSets<K,V> | Helper class for keeping Lists of Objects associated with keys.
MathUtil | Math static utility methods.
NamedSPILoader<S extends NamedSPILoader.NamedSPI> | Helper class for loading named SPIs from classpath (e.g.
NamedThreadFactory | A default `ThreadFactory` implementation that accepts the name prefix of the created threads as a constructor argument.
NumericUtils | This is a helper class to generate prefix-encoded representations for numerical values and supplies converters to represent float/double values as sortable integers/longs.
NumericUtils.IntRangeBuilder | Callback for `NumericUtils.splitIntRange(org.apache.lucene.util.NumericUtils.IntRangeBuilder, int, int, int)`.
NumericUtils.LongRangeBuilder | Callback for `NumericUtils.splitLongRange(org.apache.lucene.util.NumericUtils.LongRangeBuilder, int, long, long)`.
OpenBitSet | An "open" BitSet implementation that allows direct access to the array of words storing the bits.
OpenBitSetDISI | OpenBitSet with added methods to bulk-update the bits from a `DocIdSetIterator`.
OpenBitSetIterator | An iterator to iterate over set bits in an OpenBitSet.
PagedBytes | Represents a logical byte[] as a series of pages.
PagedBytes.Reader | Provides methods to read BytesRefs from a frozen PagedBytes.
PrintStreamInfoStream | InfoStream implementation over a `PrintStream` such as `System.out`.
PriorityQueue<T> | A PriorityQueue maintains a partial ordering of its elements such that the least element can always be found in constant time.
RamUsageEstimator | Estimates the size (memory representation) of Java objects.
RecyclingByteBlockAllocator | A `ByteBlockPool.Allocator` implementation that recycles unused byte blocks in a buffer and reuses them in subsequent calls to `RecyclingByteBlockAllocator.getByteBlock()`.
RecyclingIntBlockAllocator | A `IntBlockPool.Allocator` implementation that recycles unused int blocks in a buffer and reuses them in subsequent calls to `RecyclingIntBlockAllocator.getIntBlock()`.
RollingBuffer<T extends RollingBuffer.Resettable> | Acts like forever growing T[], but internally uses a circular buffer to reuse instances of T.
SentinelIntSet | A native int set where one value is reserved to mean "EMPTY"
SetOnce<T> | A convenient class which offers a semi-immutable object wrapper implementation which allows one to set the value of an object exactly once, and retrieve it many times.
SmallFloat | Floating point numbers smaller than 32 bits.
SorterTemplate | This class was inspired by CGLIB, but provides a better QuickSort algorithm without additional InsertionSort at the end.
SPIClassIterator<S> | Helper class for loading SPI classes from classpath (META-INF files).
StringHelper | Methods for manipulating strings.
ToStringUtils | Helper methods to ease implementing `Object.toString()`.
UnicodeUtil | Class to encode java's UTF16 char[] into UTF8 byte[] without always allocating a new byte[] as String.getBytes("UTF-8") does.
VirtualMethod<C> | A utility for keeping backwards compatibility on previously abstract methods (or similar replacements).
WeakIdentityMap<K,V> | Implements a combination of `WeakHashMap` and `IdentityHashMap`.

Enum Summary
Enum | Description
--- | ---
RamUsageEstimator.JvmFeature | JVM diagnostic features.
Version | Use by certain classes to match version compatibility across releases of Lucene.

Exception Summary
Exception | Description
--- | ---
BytesRefHash.MaxBytesLengthExceededException | Thrown if a `BytesRef` exceeds the `BytesRefHash` limit of `ByteBlockPool.BYTE_BLOCK_SIZE`-2.
SetOnce.AlreadySetException | Thrown when `SetOnce.set(Object)` is called more than once.
ThreadInterruptedException | Thrown by lucene on detecting that Thread.interrupt() had been called.

## Package org.apache.lucene.util Description

Some utility classes.