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:
java.io.Serializable,java.util.Comparator<K>
- Direct Known Subclasses:
StringKeyAnalyzer
public abstract class KeyAnalyzer<K> extends java.lang.Object implements java.util.Comparator<K>, java.io.SerializableDefines the interface to analyzeTriekeys 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:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static intEQUAL_BIT_KEYReturned bybitIndex(Object, int, int, Object, int, int)if key and found key are equal.static intNULL_BIT_KEYReturned bybitIndex(Object, int, int, Object, int, int)if key's bits are all 0.static intOUT_OF_BOUNDS_BIT_KEY
-
Constructor Summary
Constructors Constructor Description KeyAnalyzer()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract intbitIndex(K key, int offsetInBits, int lengthInBits, K other, int otherOffsetInBits, int otherLengthInBits)Returns the n-th different bit between key and other.abstract intbitsPerElement()Returns the number of bits per element in the key.intcompare(K o1, K o2)abstract booleanisBitSet(K key, int bitIndex, int lengthInBits)Returns whether or not a bit is set.abstract booleanisPrefix(K prefix, int offsetInBits, int lengthInBits, K key)Determines whether or not the given prefix (from offset to length) is a prefix of the given key.abstract intlengthInBits(K key)Returns the length of the Key in bits.
-
-
-
Field Detail
-
NULL_BIT_KEY
public static final int NULL_BIT_KEY
Returned bybitIndex(Object, int, int, Object, int, int)if key's bits are all 0.- See Also:
- Constant Field Values
-
EQUAL_BIT_KEY
public static final int EQUAL_BIT_KEY
Returned 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:
- Constant Field Values
-
OUT_OF_BOUNDS_BIT_KEY
public static final int OUT_OF_BOUNDS_BIT_KEY
- See Also:
- Constant Field Values
-
-
Method Detail
-
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
public abstract int lengthInBits(K key)
Returns the length of the Key in bits.- Parameters:
key- the key- Returns:
- the bit length of the key
-
isBitSet
public abstract boolean isBitSet(K key, int bitIndex, int lengthInBits)
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:
trueif the bit is set in the given key andbitIndex<lengthInBits,falseotherwise.
-
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
public abstract boolean isPrefix(K prefix, int offsetInBits, int lengthInBits, K key)
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:
trueif this is a valid prefix for the given key
-
-