public class ConcurrentReversedRadixTree<O> extends Object implements ReversedRadixTree<O>, PrettyPrintable, Serializable
ReversedRadixTree
which supports lock-free concurrent reads, and allows items to be added
to and to be removed from the tree atomically by background thread(s), without blocking reads.
This implementation is a lightweight wrapper around ConcurrentRadixTree
, see that class for
implementation details.Constructor and Description |
---|
ConcurrentReversedRadixTree(NodeFactory nodeFactory)
Creates a new
ConcurrentReversedRadixTree which will use the given NodeFactory to create nodes. |
Modifier and Type | Method and Description |
---|---|
Iterable<CharSequence> |
getKeysEndingWith(CharSequence suffix)
Returns a lazy iterable which returns the set of keys in the tree which end with the given suffix.
|
Iterable<KeyValuePair<O>> |
getKeyValuePairsForKeysEndingWith(CharSequence suffix)
Returns a lazy iterable which returns the set of
KeyValuePair s for keys and their associated values
in the tree, where the keys end with the given suffix. |
Node |
getNode() |
O |
getValueForExactKey(CharSequence key)
Returns the value associated with the given key (exact match), or returns null if no such value
is associated with the key.
|
Iterable<O> |
getValuesForKeysEndingWith(CharSequence suffix)
Returns a lazy iterable which returns the set of values associated with keys in the tree which end with the
given suffix.
|
O |
put(CharSequence key,
O value)
Associates the given value with the given key; replacing any previous value associated with the key.
|
O |
putIfAbsent(CharSequence key,
O value)
If a value is not already associated with the given key in the tree, associates the given value with the
key; otherwise if an existing value is already associated, returns the existing value and does not overwrite it.
|
boolean |
remove(CharSequence key)
Removes the value associated with the given key (exact match).
|
int |
size()
Counts the number of keys/values stored in the tree.
|
public ConcurrentReversedRadixTree(NodeFactory nodeFactory)
ConcurrentReversedRadixTree
which will use the given NodeFactory
to create nodes.nodeFactory
- An object which creates Node
objects on-demand, and which might return node
implementations optimized for storing the values supplied to it for the creation of each nodepublic O getValueForExactKey(CharSequence key)
getValueForExactKey
in interface ReversedRadixTree<O>
key
- The key with which a sought value might be associatedpublic O put(CharSequence key, O value)
put
in interface ReversedRadixTree<O>
key
- The key with which the specified value should be associatedvalue
- The value to associate with the key, which cannot be nullpublic O putIfAbsent(CharSequence key, O value)
putIfAbsent
in interface ReversedRadixTree<O>
key
- The key with which the specified value should be associatedvalue
- The value to associate with the key, which cannot be nullpublic Iterable<CharSequence> getKeysEndingWith(CharSequence suffix)
getKeysEndingWith
in interface ReversedRadixTree<O>
suffix
- A suffix of sought keys in the treepublic Iterable<O> getValuesForKeysEndingWith(CharSequence suffix)
Object.equals(Object)
).getValuesForKeysEndingWith
in interface ReversedRadixTree<O>
suffix
- A suffix of keys in the tree for which associated values are soughtpublic Iterable<KeyValuePair<O>> getKeyValuePairsForKeysEndingWith(CharSequence suffix)
KeyValuePair
s for keys and their associated values
in the tree, where the keys end with the given suffix.
This is inclusive - if the given suffix is an exact match for a key in the tree, the KeyValuePair
for that key is also returned.getKeyValuePairsForKeysEndingWith
in interface ReversedRadixTree<O>
suffix
- A suffix of keys in the tree for which associated KeyValuePair
s are soughtKeyValuePair
s for keys in the tree which end with the given suffix, inclusivepublic boolean remove(CharSequence key)
remove
in interface ReversedRadixTree<O>
key
- The key for which an associated value should be removedpublic int size()
size
in interface ReversedRadixTree<O>
public Node getNode()
getNode
in interface PrettyPrintable
Copyright © 2018. All rights reserved.