Java:来自TreeMap条目的迭代器?

时间:2016-02-25 10:25:28

标签: java containers treemap

在Java中,ISelectionService使用RB树来存储条目,允许使用TreeMap<K,V>进行有序迭代,同时保证在log(N)时间内插入和查找。

TreeMap还提供了查找给定键的上限和下限的方法:map.entrySet().iterator()map.floorEntry(k)map.ceilingEntry()map.lowerEntry(k)。但是,这些实例的返回值是map.higherEntry()实例,并且不会直接允许访问相邻条目。考虑到它的关键,我想访问一个假想条目的潜在邻居。

有没有办法从TreeMap条目中获取迭代器或者做我想做的事情?

更习惯于C ++的Map.Entry<K,V>课程,我在这里不知所措......

注意我使用java.util以外的容器库开放解决方案,只要它有一个具有合理时间复杂度保证的有序地图容器。< / p>

1 个答案:

答案 0 :(得分:2)

您可以将返回的-- Two tables, a post can have many likes CREATE TABLE post (postId INT); CREATE TABLE `like` (postId INT); -- Insert some posts and likes for some of those posts INSERT INTO post VALUES (1),(2),(3),(4),(5),(6),(7),(8); INSERT INTO `like` VALUES (1),(1),(3),(3),(5),(6),(7),(8); -- Take a look at the data SELECT * FROM post; SELECT * FROM `like`; -- Count the number of likes per post SELECT p.postId, COUNT(l.postId) likes FROM post p LEFT JOIN `like` l ON p.postId = l.postId GROUP BY p.postId HAVING COUNT(l.postId) > 0; -- This removed the posts with no likes 的密钥作为Map.Entry<K, V>tailMap(K fromKey)中的参数,并迭代结果。