【发布时间】:2016-10-25 03:40:24
【问题描述】:
我有一个TreeMultimap<Integer, String>,其中也包含重复的键。
我想获取特定键中的值计数 范围,这也是 O(logN) 时间复杂度。
我首先尝试使用 asMap() 方法将 TreeMultimap 转换为 SortedMap,然后在所需范围内创建 submap 并获取其大小。
SortedMap<Integer, Collection<String>> sortedMap = mapList.getTmm().asMap();
return sortedMap.subMap(beg,end).size();
它是否具有复杂性O(logN)?
另外,我在这里遇到了一个问题。当TreeMultimap 转换为SortedMap 时,值是Collection 类的对象。即在TreeMultimap 中具有重复键的键值对包含在单个Collection 类中。
所以size() 方法返回了错误的值。
还有其他方法可以实现吗? 任何帮助表示赞赏。
【问题讨论】:
-
"复杂度是否为 O(logN)?"没关系,因为它没有返回正确的答案:它不是值的计数,而是键的计数。
-
是的。还有其他方法吗? @AndyTurner
标签: java dictionary guava multimap sortedmap