在Java中,
TreeMap还提供了查找给定键的上限和下限的方法:
是否有一种方法可以从TreeMap条目获取迭代器或者完成我正在尝试的操作?
由于更习惯于C++的
注意:我可以接受使用java.util之外的容器库的解决方案,只要它具有一些合理的时间复杂度保证的排序映射容器。
TreeMap<K,V>
使用RB-tree存储条目,允许使用map.entrySet().iterator()
进行顺序迭代,同时保证在log(N)时间内插入和查找。TreeMap还提供了查找给定键的上限和下限的方法:
map.floorEntry(k)
、map.ceilingEntry()
、map.lowerEntry(k)
和map.higherEntry()
。然而,这些的返回值是一个Map.Entry<K,V>
实例,并不直接允许访问相邻的条目。我想访问给定键的假设条目的邻居。是否有一种方法可以从TreeMap条目获取迭代器或者完成我正在尝试的操作?
由于更习惯于C++的
std::map<K,V>
类,我在这里感到困惑...注意:我可以接受使用java.util之外的容器库的解决方案,只要它具有一些合理的时间复杂度保证的排序映射容器。
map.tailMap(map.lowerEntry(k).getKey())
。那样可以工作,但仍需要进行2次查找。 - Shadocko