ceiling
功能? ceiling(key)
将返回大于给定值的最小键。 (我知道我可以得到一个有序的集视图,只是看,但我更喜欢具有更快的时间复杂性,如平衡的二叉搜索树提供)答案 0 :(得分:3)
multimap.keySet().ceiling(key)
非常直接,但你需要Java 6和最新的Guava版本14.0,这是TreeMultimap.keySet()
started returning NavigableSet
。复杂度为O(log #keys),与您期望的完全一样。
答案 1 :(得分:0)
K ceiling(K key, TreeMultimap<K,V> map) {
SortedSet<K> keyset = map.keySet();
SortedSet<K> head = keyset.headSet(key);
return headSet.isEmpty() ? null : head.last();
}
文档没有提及操作的任何时间保证,但我希望它以对数时间运行,因为keySet
和headSet
似乎都返回基础数据的视图而不是构建新收藏品本身。