public interface Trie<K,V>
extends java.util.SortedMap<K,V>
| Modifier and Type | Method and Description |
|---|---|
java.util.SortedMap<K,V> |
prefixMap(K prefix)
Returns a view of this
Trie of all elements that are prefixed
by the given key. |
java.util.Map.Entry<K,V> |
select(K key)
Returns the
Map.Entry whose key is closest in a bitwise XOR
metric to the given key. |
java.util.Map.Entry<K,V> |
select(K key,
Cursor<? super K,? super V> cursor)
Iterates through the
Trie, starting with the entry whose bitwise
value is closest in an XOR metric to the given key. |
K |
selectKey(K key)
Returns the key that is closest in a bitwise XOR metric to the
provided key.
|
V |
selectValue(K key)
Returns the value whose key is closest in a bitwise XOR metric to
the provided key.
|
java.util.Map.Entry<K,V> |
traverse(Cursor<? super K,? super V> cursor)
Traverses the
Trie in lexicographical order. |
java.util.Map.Entry<K,V> select(K key)
Map.Entry whose key is closest in a bitwise XOR
metric to the given key. This is NOT lexicographic closeness.
For example, given the keys:
Trie contained 'H' and 'L', a lookup of 'D' would
return 'L', because the XOR distance between D & L is smaller
than the XOR distance between D & H.Map.Entry whose key is closest in a bitwise XOR metric
to the provided key.K selectKey(K key)
Trie contained 'H' and 'L', a lookup of 'D' would
return 'L', because the XOR distance between D & L is smaller
than the XOR distance between D & H.V selectValue(K key)
Trie contained 'H' and 'L', a lookup of 'D' would
return 'L', because the XOR distance between D & L is smaller
than the XOR distance between D & H.java.util.Map.Entry<K,V> select(K key, Cursor<? super K,? super V> cursor)
Trie, starting with the entry whose bitwise
value is closest in an XOR metric to the given key. After the closest
entry is found, the Trie will call select on that entry and continue
calling select for each entry (traversing in order of XOR closeness,
NOT lexicographically) until the cursor returns Cursor.Decision.EXIT.
The cursor can return Cursor.Decision.CONTINUE to continue traversing.
Cursor.Decision.REMOVE_AND_EXIT is used to remove the current element
and stop traversing.
Note: The Cursor.Decision.REMOVE operation is not supported.
Cursor.Decision.EXIT on, or null
if it continued till the end.java.util.Map.Entry<K,V> traverse(Cursor<? super K,? super V> cursor)
Trie in lexicographical order.
Cursor.select(java.util.Map.Entry) will be called on each entry.
The traversal will stop when the cursor returns Cursor.Decision.EXIT,
Cursor.Decision.CONTINUE is used to continue traversing and
Cursor.Decision.REMOVE is used to remove the element that was selected
and continue traversing.
Cursor.Decision.REMOVE_AND_EXIT is used to remove the current element
and stop traversing.
Cursor.Decision.EXIT on, or null
if it continued till the end.java.util.SortedMap<K,V> prefixMap(K prefix)
Trie of all elements that are prefixed
by the given key.
In a Trie with fixed size keys, this is essentially a
Map.get(Object) operation.
For example, if the Trie contains 'Anna', 'Anael',
'Analu', 'Andreas', 'Andrea', 'Andres', and 'Anatole', then
a lookup of 'And' would return 'Andreas', 'Andrea', and 'Andres'.
Copyright © 2018 The Apache Software Foundation