在Java中,TreeMap<K,V>
使用RB树来存储条目,允许使用map.entrySet().iterator()
进行顺序迭代,同时保证log(N)时间内的插入和查找。
树状图还提供了查找给定键的上限和下限的方法:map.floorEntry(k)
、map.ceilingEntry()
、map.lowerEntry(k)
和map.higherEntry()
。但是,这些的返回值是一个Map.Entry<K,V>
实例,不会直接允许访问相邻条目。我想拜访一个假设条目的潜在邻居,因为它的钥匙。
有没有办法从树状图条目中获取迭代器或执行我正在尝试执行的操作?
更习惯C++的std::map<K,V>
课,我在这里不知所措......
注意:我对使用 java.util 以外的容器库的解决方案持开放态度,只要它有一个排序的映射容器,并具有一些合理的时间复杂性保证。
您可以将返回Map.Entry<K, V>
的键作为tailMap(K fromKey)
或headMap(K toKey)
中的参数,并迭代结果。