Class KeyAnalyzer<K>
java.lang.Object
org.apache.commons.collections4.trie.KeyAnalyzer<K>
- Type Parameters:
K
- the type of objects that may be compared by this analyzer
- All Implemented Interfaces:
Serializable
,Comparator<K>
- Direct Known Subclasses:
StringKeyAnalyzer
Defines the interface to analyze
Trie
keys on a bit level.
KeyAnalyzer
's methods return the length of the key in bits, whether or not a bit is set,
and bits per element in the key.
Additionally, a method determines if a key is a prefix of another
key and returns the bit index where one key is different from another
key (if the key and found key are equal than the return value is
EQUAL_BIT_KEY
).
- Since:
- 4.0
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Returned bybitIndex(Object, int, int, Object, int, int)
if key and found key are equal.static final int
Returned bybitIndex(Object, int, int, Object, int, int)
if key's bits are all 0.static final int
private static final long
Serialization version -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract int
bitIndex
(K key, int offsetInBits, int lengthInBits, K other, int otherOffsetInBits, int otherLengthInBits) Returns the n-th different bit between key and other.abstract int
Returns the number of bits per element in the key.int
abstract boolean
Returns whether or not a bit is set.(package private) static boolean
isEqualBitKey
(int bitIndex) Returns true if bitIndex is aEQUAL_BIT_KEY
.(package private) static boolean
isNullBitKey
(int bitIndex) Returns true if bitIndex is aNULL_BIT_KEY
.(package private) static boolean
isOutOfBoundsIndex
(int bitIndex) Returns true if bitIndex is aOUT_OF_BOUNDS_BIT_KEY
.abstract boolean
Determines whether or not the given prefix (from offset to length) is a prefix of the given key.(package private) static boolean
isValidBitIndex
(int bitIndex) Returns true if the given bitIndex is valid.abstract int
lengthInBits
(K key) Returns the length of the Key in bits.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Comparator
equals, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version- See Also:
-
NULL_BIT_KEY
public static final int NULL_BIT_KEYReturned bybitIndex(Object, int, int, Object, int, int)
if key's bits are all 0.- See Also:
-
EQUAL_BIT_KEY
public static final int EQUAL_BIT_KEYReturned bybitIndex(Object, int, int, Object, int, int)
if key and found key are equal. This is a very very specific case and shouldn't happen on a regular basis.- See Also:
-
OUT_OF_BOUNDS_BIT_KEY
public static final int OUT_OF_BOUNDS_BIT_KEY- See Also:
-
-
Constructor Details
-
KeyAnalyzer
public KeyAnalyzer()
-
-
Method Details
-
isOutOfBoundsIndex
static boolean isOutOfBoundsIndex(int bitIndex) Returns true if bitIndex is aOUT_OF_BOUNDS_BIT_KEY
. -
isEqualBitKey
static boolean isEqualBitKey(int bitIndex) Returns true if bitIndex is aEQUAL_BIT_KEY
. -
isNullBitKey
static boolean isNullBitKey(int bitIndex) Returns true if bitIndex is aNULL_BIT_KEY
. -
isValidBitIndex
static boolean isValidBitIndex(int bitIndex) Returns true if the given bitIndex is valid. Indices are considered valid if they're between 0 andInteger.MAX_VALUE
-
bitsPerElement
public abstract int bitsPerElement()Returns the number of bits per element in the key. This is only useful for variable-length keys, such as Strings.- Returns:
- the number of bits per element
-
lengthInBits
Returns the length of the Key in bits.- Parameters:
key
- the key- Returns:
- the bit length of the key
-
isBitSet
Returns whether or not a bit is set.- Parameters:
key
- the key to check, may not be nullbitIndex
- the bit index to checklengthInBits
- the maximum key length in bits to check- Returns:
true
if the bit is set in the given key andbitIndex
<lengthInBits
,false
otherwise.
-
bitIndex
public abstract int bitIndex(K key, int offsetInBits, int lengthInBits, K other, int otherOffsetInBits, int otherLengthInBits) Returns the n-th different bit between key and other. This starts the comparison in key at 'offsetInBits' and goes for 'lengthInBits' bits, and compares to the other key starting at 'otherOffsetInBits' and going for 'otherLengthInBits' bits.- Parameters:
key
- the key to useoffsetInBits
- the bit offset in the keylengthInBits
- the maximum key length in bits to useother
- the other key to useotherOffsetInBits
- the bit offset in the other keyotherLengthInBits
- the maximum key length in bits for the other key- Returns:
- the bit index where the key and other first differ
-
isPrefix
Determines whether or not the given prefix (from offset to length) is a prefix of the given key.- Parameters:
prefix
- the prefix to checkoffsetInBits
- the bit offset in the keylengthInBits
- the maximum key length in bits to usekey
- the key to check- Returns:
true
if this is a valid prefix for the given key
-
compare
- Specified by:
compare
in interfaceComparator<K>
-