com.googlecode.concurrenttrees.radixinverted
Interface InvertedRadixTree<O>

Type Parameters:
O - The type of the values associated with keys in the tree
All Superinterfaces:
RadixTree<O>
All Known Implementing Classes:
ConcurrentInvertedRadixTree

public interface InvertedRadixTree<O>
extends RadixTree<O>

API of an inverted radix tree, that is a radix tree which is set up to scan external documents for keys previously added to the tree, rather than for data contained in the tree itself.

This method of scanning external documents for keys (or keywords) can be significantly faster than repeatedly scanning the same document for each and every keyword using String.contains(CharSequence) on the document.

Time complexity is O(d) rather than O(dn), where d=length of document and n=number of keys/keywords.

This is an extension of RadixTree which provides additional traversal algorithms to implement this functionality on top of the same tree structure. See documentation on each method for details.

Author:
Niall Gallagher

Method Summary
 Iterable<CharSequence> getKeysContainedIn(CharSequence document)
          Returns a lazy iterable which returns the set of keys in the tree which are contained in the given document.
 Iterable<CharSequence> getKeysPrefixing(CharSequence document)
          Returns a lazy iterable which returns the set of keys in the tree which prefix the given document.
 Iterable<KeyValuePair<O>> getKeyValuePairsForKeysContainedIn(CharSequence document)
          Returns a lazy iterable which returns the set of KeyValuePairs for keys in the tree which are contained in the given document.
 Iterable<KeyValuePair<O>> getKeyValuePairsForKeysPrefixing(CharSequence document)
          Returns a lazy iterable which returns the set of KeyValuePairs for keys in the tree which prefix the given document.
 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> getValuesForKeysContainedIn(CharSequence document)
          Returns a lazy iterable which returns the set of values associated with keys in the tree which are contained in the given document.
 Iterable<O> getValuesForKeysPrefixing(CharSequence document)
          Returns a lazy iterable which returns the set of values associated with keys in the tree which prefix the given document.
 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.
 
Methods inherited from interface com.googlecode.concurrenttrees.radix.RadixTree
getClosestKeys, getKeysStartingWith, getKeyValuePairsForClosestKeys, getKeyValuePairsForKeysStartingWith, getValuesForClosestKeys, getValuesForKeysStartingWith
 

Method Detail

put

O put(CharSequence key,
      O value)
Associates the given value with the given key; replacing any previous value associated with the key. Returns the previous value associated with the key, if any.

This operation is performed atomically.

Specified by:
put in interface RadixTree<O>
Parameters:
key - The key with which the specified value should be associated
value - The value to associate with the key, which cannot be null
Returns:
The previous value associated with the key, if there was one, otherwise null

putIfAbsent

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.

This operation is performed atomically.

Specified by:
putIfAbsent in interface RadixTree<O>
Parameters:
key - The key with which the specified value should be associated
value - The value to associate with the key, which cannot be null
Returns:
The existing value associated with the key, if there was one; otherwise null in which case the new value was successfully associated

remove

boolean remove(CharSequence key)
Removes the value associated with the given key (exact match). If no value is associated with the key, does nothing.

Specified by:
remove in interface RadixTree<O>
Parameters:
key - The key for which an associated value should be removed
Returns:
True if a value was removed (and therefore was associated with the key), false if no value was associated/removed

getValueForExactKey

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.

Specified by:
getValueForExactKey in interface RadixTree<O>
Parameters:
key - The key with which a sought value might be associated
Returns:
The value associated with the given key (exact match), or null if no value was associated with the key

getKeysPrefixing

Iterable<CharSequence> getKeysPrefixing(CharSequence document)
Returns a lazy iterable which returns the set of keys in the tree which prefix the given document.

Parameters:
document - A document to be scanned for keys contained in the tree which prefix the given document
Returns:
The set of keys in the tree which prefix the given document

getValuesForKeysPrefixing

Iterable<O> getValuesForKeysPrefixing(CharSequence document)
Returns a lazy iterable which returns the set of values associated with keys in the tree which prefix the given document.

Parameters:
document - A document to be scanned for keys contained in the tree which prefix the given document
Returns:
The set of values associated with keys in the tree which prefix the given document

getKeyValuePairsForKeysPrefixing

Iterable<KeyValuePair<O>> getKeyValuePairsForKeysPrefixing(CharSequence document)
Returns a lazy iterable which returns the set of KeyValuePairs for keys in the tree which prefix the given document.

Parameters:
document - A document to be scanned for keys contained in the tree which prefix the given document
Returns:
The set of KeyValuePairs for keys in the tree which prefix the given document

getKeysContainedIn

Iterable<CharSequence> getKeysContainedIn(CharSequence document)
Returns a lazy iterable which returns the set of keys in the tree which are contained in the given document.

Parameters:
document - A document to be scanned for keys contained in the tree
Returns:
The set of keys in the tree which are contained in the given document

getValuesForKeysContainedIn

Iterable<O> getValuesForKeysContainedIn(CharSequence document)
Returns a lazy iterable which returns the set of values associated with keys in the tree which are contained in the given document.

Parameters:
document - A document to be scanned for keys contained in the tree
Returns:
The set of values associated with keys in the tree which are contained in the given document

getKeyValuePairsForKeysContainedIn

Iterable<KeyValuePair<O>> getKeyValuePairsForKeysContainedIn(CharSequence document)
Returns a lazy iterable which returns the set of KeyValuePairs for keys in the tree which are contained in the given document.

Parameters:
document - A document to be scanned for keys contained in the tree
Returns:
The set of KeyValuePairs for keys in the tree which are contained in the given document

size

int size()
Counts the number of keys/values stored in the tree.

In the current implementation, this is an expensive operation, having O(n) time complexity.

Specified by:
size in interface RadixTree<O>
Returns:
The number of keys/values stored in the tree


Copyright © 2013. All Rights Reserved.