Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:来自树映射项的迭代器?_Java_Containers_Treemap - Fatal编程技术网

Java:来自树映射项的迭代器?

Java:来自树映射项的迭代器?,java,containers,treemap,Java,Containers,Treemap,在Java中,TreeMap使用RB树存储条目,允许使用map.entrySet().iterator()进行顺序迭代,同时保证在日志(N)时间内插入和查找 TreeMap还提供了查找给定键的上下界的方法:map.floorEntry(k),map.ceilingEntry(),map.lowerEntry(k)和map.higherEntry()。但是,它们的返回值是一个Map.Entry实例,不允许直接访问相邻的条目。我想参观一个假想入口的准邻居,因为它有钥匙 有没有一种方法可以从树映射条目

在Java中,
TreeMap
使用RB树存储条目,允许使用
map.entrySet().iterator()
进行顺序迭代,同时保证在日志(N)时间内插入和查找

TreeMap还提供了查找给定键的上下界的方法:
map.floorEntry(k)
map.ceilingEntry()
map.lowerEntry(k)
map.higherEntry()
。但是,它们的返回值是一个
Map.Entry
实例,不允许直接访问相邻的条目。我想参观一个假想入口的准邻居,因为它有钥匙

有没有一种方法可以从树映射条目中获取迭代器,或者执行我正在尝试的操作

更习惯于C++的
std::map
类,我在这里不知所措


注意我愿意使用java.util以外的容器库解决方案,只要它有一个具有合理时间复杂度保证的排序映射容器。

您可以将返回的
map.Entry
的键作为
tailMap(K fromKey)
headMap(K toKey)
中的参数,然后迭代结果。

这几乎就是我想要的;但是,考虑到我想要获取给定键之前和之后的两个条目,我必须调用这两个方法,这意味着两次查找,这似乎浪费了CPU周期。好的,对不起,我误解了你的答案,你显然是指
map.tailMap(map.lowerEntry(k).getKey())
。另一个解决方案是根据您的需要制作自己的树映射迭代器,但这不是一项容易的任务