@Test public void testGetValueForLongestKeyPrefixing() { ConcurrentInvertedRadixTree<Integer> tree = new ConcurrentInvertedRadixTree<Integer>(getNodeFactory()); tree.put("COD", 1); tree.put("CODFISH", 2); tree.put("COFFEE", 3); tree.put("CODFISHES", 4); assertEquals(new Integer(1), tree.getValueForLongestKeyPrefixing("COD")); assertEquals(new Integer(2), tree.getValueForLongestKeyPrefixing("CODFISH")); assertEquals(new Integer(4), tree.getValueForLongestKeyPrefixing("CODFISHES")); assertEquals(new Integer(1), tree.getValueForLongestKeyPrefixing("CODFUNKY")); assertEquals(new Integer(2), tree.getValueForLongestKeyPrefixing("CODFISHING")); assertNull(tree.getValueForLongestKeyPrefixing("DOESNOTEXIST")); assertNull(tree.getValueForLongestKeyPrefixing("C")); assertNull(tree.getValueForLongestKeyPrefixing("CO")); assertNull(tree.getValueForLongestKeyPrefixing("")); }
@Override public O getValueForLongestKeyPrefixing(CharSequence document) { KeyValuePair<O> match = radixTree.scanForLongestKeyAtStartOfInput(document); return match == null ? null : match.getValue(); }
ConcurrentInvertedRadixTree implements InvertedRadixTree<O>, PrettyPrintable, Serializable { @Override public O getValueForLongestKeyPrefixing(CharSequence document) { KeyValuePair<O> match = radixTree.scanForLongestKeyAtStartOfInput(document); return match == null ? null : match.getValue(); } }
ConcurrentInvertedRadixTree implements InvertedRadixTree<O>, PrettyPrintable, Serializable { @Override public O getValueForLongestKeyPrefixing(CharSequence document) { KeyValuePair<O> match = radixTree.scanForLongestKeyAtStartOfInput(document); return match == null ? null : match.getValue(); } ConcurrentInvertedRadixTree(NodeFactory nodeFactory); }
ConcurrentInvertedRadixTree implements InvertedRadixTree<O>, PrettyPrintable, Serializable { @Override public O getValueForLongestKeyPrefixing(CharSequence document) { KeyValuePair<O> match = radixTree.scanForLongestKeyAtStartOfInput(document); return match == null ? null : match.getValue(); } ConcurrentInvertedRadixTree(NodeFactory nodeFactory); @Override O put(CharSequence key, O value); @Override O putIfAbsent(CharSequence key, O value); @Override boolean remove(CharSequence key); @Override O getValueForExactKey(CharSequence key); @Override Iterable<CharSequence> getKeysStartingWith(CharSequence prefix); @Override Iterable<O> getValuesForKeysStartingWith(CharSequence prefix); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForKeysStartingWith(CharSequence prefix); @Override Iterable<CharSequence> getClosestKeys(CharSequence candidate); @Override Iterable<O> getValuesForClosestKeys(CharSequence candidate); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForClosestKeys(CharSequence candidate); @Override Iterable<CharSequence> getKeysPrefixing(final CharSequence document); @Override Iterable<O> getValuesForKeysPrefixing(final CharSequence document); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForKeysPrefixing(final CharSequence document); @Override CharSequence getLongestKeyPrefixing(CharSequence document); @Override O getValueForLongestKeyPrefixing(CharSequence document); @Override KeyValuePair<O> getKeyValuePairForLongestKeyPrefixing(CharSequence document); @Override Iterable<CharSequence> getKeysContainedIn(final CharSequence document); @Override Iterable<O> getValuesForKeysContainedIn(final CharSequence document); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForKeysContainedIn(final CharSequence document); @Override int size(); @Override Node getNode(); }
ConcurrentInvertedRadixTree implements InvertedRadixTree<O>, PrettyPrintable, Serializable { @Override public O getValueForLongestKeyPrefixing(CharSequence document) { KeyValuePair<O> match = radixTree.scanForLongestKeyAtStartOfInput(document); return match == null ? null : match.getValue(); } ConcurrentInvertedRadixTree(NodeFactory nodeFactory); @Override O put(CharSequence key, O value); @Override O putIfAbsent(CharSequence key, O value); @Override boolean remove(CharSequence key); @Override O getValueForExactKey(CharSequence key); @Override Iterable<CharSequence> getKeysStartingWith(CharSequence prefix); @Override Iterable<O> getValuesForKeysStartingWith(CharSequence prefix); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForKeysStartingWith(CharSequence prefix); @Override Iterable<CharSequence> getClosestKeys(CharSequence candidate); @Override Iterable<O> getValuesForClosestKeys(CharSequence candidate); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForClosestKeys(CharSequence candidate); @Override Iterable<CharSequence> getKeysPrefixing(final CharSequence document); @Override Iterable<O> getValuesForKeysPrefixing(final CharSequence document); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForKeysPrefixing(final CharSequence document); @Override CharSequence getLongestKeyPrefixing(CharSequence document); @Override O getValueForLongestKeyPrefixing(CharSequence document); @Override KeyValuePair<O> getKeyValuePairForLongestKeyPrefixing(CharSequence document); @Override Iterable<CharSequence> getKeysContainedIn(final CharSequence document); @Override Iterable<O> getValuesForKeysContainedIn(final CharSequence document); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForKeysContainedIn(final CharSequence document); @Override int size(); @Override Node getNode();  }