我满足于有一个O(log n)的第一个操作来找到我的起点
NavigableMap<Double,MyThing> navlevel = new TreeMap<>();
但是在手写的C ++(或者我想用手工编写的Java)中,一旦我找到了一个指向MyThing的节点,我就可以在该节点上进行“下一步”操作,这将只分配几个指针操作。 (如果有正确的链接,则向右走,然后一直向左走;否则请转到您的父级,直到找到您来自父级左子节点的节点。)
Map.Entry<Double,MyThing> entry =
navthing.ceilingEntry( dSomeValue );
while ( entry != null ) {
MyThing level = entry.getValue();
// Process and break on some condition.
// vvvvvvvvv This I'm sure is O( log n ) and I want it to be faster!
entry = navthing.higherEntry( entry.getKey() );
}