本文整理汇总了Java中com.googlecode.concurrenttrees.radix.RadixTree类的典型用法代码示例。如果您正苦于以下问题:Java RadixTree类的具体用法?Java RadixTree怎么用?Java RadixTree使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
RadixTree类属于com.googlecode.concurrenttrees.radix包,在下文中一共展示了RadixTree类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: main
import com.googlecode.concurrenttrees.radix.RadixTree; //导入依赖的package包/类
public static void main(String[] args) {
RadixTree<Integer> tree = new ConcurrentRadixTree<Integer>(new DefaultCharArrayNodeFactory());
tree.put("TEST", 1);
tree.put("TOAST", 2);
tree.put("TEAM", 3);
System.out.println("Tree structure:");
// PrettyPrintable is a non-public API for testing, prints semi-graphical representations of trees...
PrettyPrinter.prettyPrint((PrettyPrintable) tree, System.out);
System.out.println();
System.out.println("Value for 'TEST' (exact match): " + tree.getValueForExactKey("TEST"));
System.out.println("Value for 'TOAST' (exact match): " + tree.getValueForExactKey("TOAST"));
System.out.println();
System.out.println("Keys starting with 'T': " + Iterables.toString(tree.getKeysStartingWith("T")));
System.out.println("Keys starting with 'TE': " + Iterables.toString(tree.getKeysStartingWith("TE")));
System.out.println();
System.out.println("Values for keys starting with 'TE': " + Iterables.toString(tree.getValuesForKeysStartingWith("TE")));
System.out.println("Key-Value pairs for keys starting with 'TE': " + Iterables.toString(tree.getKeyValuePairsForKeysStartingWith("TE")));
System.out.println();
System.out.println("Keys closest to 'TEMPLE': " + Iterables.toString(tree.getClosestKeys("TEMPLE")));
}
示例2: retrieveIn
import com.googlecode.concurrenttrees.radix.RadixTree; //导入依赖的package包/类
protected ResultSet<O> retrieveIn(final In<O, A> in, final QueryOptions queryOptions, final RadixTree<StoredResultSet<O>> tree) {
// Process the IN query as the union of the EQUAL queries for the values specified by the IN query.
final Iterable<? extends ResultSet<O>> results = new Iterable<ResultSet<O>>() {
@Override
public Iterator<ResultSet<O>> iterator() {
return new LazyIterator<ResultSet<O>>() {
final Iterator<A> values = in.getValues().iterator();
@Override
protected ResultSet<O> computeNext() {
if (values.hasNext()){
return retrieveEqual(new Equal<O, A>(in.getAttribute(), values.next()), queryOptions, tree);
}else{
return endOfData();
}
}
};
}
};
return deduplicateIfNecessary(results, in, getAttribute(), queryOptions, INDEX_RETRIEVAL_COST);
}
示例3: removeAll
import com.googlecode.concurrenttrees.radix.RadixTree; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
@Override
public boolean removeAll(ObjectSet<O> objectSet, QueryOptions queryOptions) {
try {
boolean modified = false;
final RadixTree<StoredResultSet<O>> tree = this.tree;
for (O object : objectSet) {
Iterable<A> attributeValues = getAttribute().getValues(object, queryOptions);
for (A attributeValue : attributeValues) {
StoredResultSet<O> valueSet = tree.getValueForExactKey(attributeValue);
if (valueSet == null) {
continue;
}
modified |= valueSet.remove(object);
if (valueSet.isEmpty()) {
tree.remove(attributeValue);
}
}
}
return modified;
}
finally {
objectSet.close();
}
}
示例4: main
import com.googlecode.concurrenttrees.radix.RadixTree; //导入依赖的package包/类
public static void main(String[] args) {
RadixTree<Integer> tree = new ConcurrentRadixTree<Integer>(new DefaultCharArrayNodeFactory());
tree.put("TEST", 1);
tree.put("TOAST", 2);
tree.put("TEAM", 3);
Iterable<CharSequence> keysStartingWithT = tree.getKeysStartingWith("T");
List<CharSequence> listOfKeysStartingWithT = Iterables.toList (keysStartingWithT);
Set<CharSequence> setOfKeysStartingWithT = Iterables.toSet (keysStartingWithT);
String toStringOfKeysStartingWithT = Iterables.toString(keysStartingWithT);
System.out.println("Keys starting with 'T': " + toStringOfKeysStartingWithT);
}
示例5: addAll
import com.googlecode.concurrenttrees.radix.RadixTree; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
@Override
public boolean addAll(ObjectSet<O> objectSet, QueryOptions queryOptions) {
try {
boolean modified = false;
final RadixTree<StoredResultSet<O>> tree = this.tree;
for (O object : objectSet) {
Iterable<A> attributeValues = getAttribute().getValues(object, queryOptions);
for (A attributeValue : attributeValues) {
// Look up StoredResultSet for the value...
StoredResultSet<O> valueSet = tree.getValueForExactKey(attributeValue);
if (valueSet == null) {
// No StoredResultSet, create and add one...
valueSet = createValueSet();
StoredResultSet<O> existingValueSet = tree.putIfAbsent(attributeValue, valueSet);
if (existingValueSet != null) {
// Another thread won race to add new value set, use that one...
valueSet = existingValueSet;
}
}
// Add the object to the StoredResultSet for this value...
modified |= valueSet.add(object);
}
}
return modified;
}
finally {
objectSet.close();
}
}
示例6: getValueForClosestParentAddress
import com.googlecode.concurrenttrees.radix.RadixTree; //导入依赖的package包/类
/**
* Returns the value associated with the closest parent address from a
* given radix tree, or returns null if no such value is associated
* with the address.
*
* @param prefix IP prefix
* @param tree a radix tree
* @return A value associated with the closest parent address, or
* null if no value was associated with the address
*/
private V getValueForClosestParentAddress(IpPrefix prefix, RadixTree<V> tree) {
while (prefix != null && prefix.prefixLength() > 0) {
V value = tree.getValueForExactKey(getPrefixString(prefix));
if (value != null) {
return value;
}
prefix = getParentPrefix(prefix);
}
return null;
}
示例7: handleGetMethod
import com.googlecode.concurrenttrees.radix.RadixTree; //导入依赖的package包/类
/**
* Gets the contents of SDN-IP's route table.
*
* @return the contents of SDN-IP's route table formatted as JSON
*/
@Get
public String handleGetMethod() {
String dest = (String) getRequestAttributes().get("dest");
StringBuilder output = new StringBuilder(80);
ISdnIpService sdnIp = (ISdnIpService) getContext()
.getAttributes().
get(ISdnIpService.class.getCanonicalName());
if (dest == null) {
RadixTree<RibEntry> radixTree = sdnIp.getPtree();
output.append("{\n \"rib\": [\n");
boolean printed = false;
Iterator<KeyValuePair<RibEntry>> it =
radixTree.getKeyValuePairsForKeysStartingWith("").iterator();
while (it.hasNext()) {
KeyValuePair<RibEntry> entry = it.next();
if (printed) {
output.append(",\n");
}
output.append(" {\"prefix\": \"");
output.append(Prefix.fromBinaryString(entry.getKey().toString()));
output.append("\", \"nexthop\": \"");
output.append(entry.getValue().getNextHop().getHostAddress());
output.append("\"}");
printed = true;
}
output.append("\n ]\n}\n");
} else {
// TODO Needs to be changed to use the new RestClient.get().
// the dest here refers to router-id
// bgpdRestIp includes port number, such as 1.1.1.1:8080
String bgpdRestIp = sdnIp.getBgpdRestIp();
String url = "http://" + bgpdRestIp + "/wm/bgp/" + dest;
// Doesn't actually do anything with the response
RestClient.get(url);
output.append("Get rib from bgpd finished!\n");
}
return output.toString();
}
示例8: getPtree
import com.googlecode.concurrenttrees.radix.RadixTree; //导入依赖的package包/类
@Override
public RadixTree<RibEntry> getPtree() {
return bgpRoutes;
}
示例9: getPtree
import com.googlecode.concurrenttrees.radix.RadixTree; //导入依赖的package包/类
/**
* Gets a reference to SDN-IP's radix tree which stores the route table
* learnt through BGP.
*
* XXX This is a poor API because it exposes internal state of SDN-IP.
*
* @return the radix tree
*/
public RadixTree<RibEntry> getPtree();