在 Java 中,TreeMap<K,V>
使用 RB 树存储条目,允许使用 map.entrySet().iterator()
进行有序迭代, 同时保证在 log(N) 时间内插入和查找。
TreeMap 还提供了查找给定键的上限和下限的方法:map.floorEntry(k)
, map.ceilingEntry()
, map.lowerEntry(k)
和 map.higherEntry()
.但是,这些的返回值是 Map.Entry<K,V>
实例并且不会直接允许一个人访问相邻的条目。我想访问一个假设条目的潜在邻居,因为它有 key 。
有没有办法从 TreeMap 条目获取迭代器或做我想做的事情?
更习惯于 C++ 的 std::map<K,V>
类(class),我在这里不知所措......
注意 我对使用 java.util 以外的容器库的解决方案持开放态度,只要它有一个排序的映射容器,并有一些合理的时间复杂度保证。
最佳答案
您可以拿回返回的 key Map.Entry<K, V>
作为 tailMap(K fromKey)
中的参数或 headMap(K toKey)
, 并迭代结果。
关于Java:来自 TreeMap 条目的迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35624593/