使用TreeMultimap的ceiling()

时间:2013-03-16 19:41:06

标签: java guava binary-search-tree treemap

  • 是否可以从Google的番石榴中扩展TreeMultimap以获得一些奇怪的ceiling功能? ceiling(key)将返回大于给定值的最小键。 (我知道我可以得到一个有序的集视图,只是看,但我更喜欢具有更快的时间复杂性,如平衡的二叉搜索树提供)
  • 是否有其他库可以实现平衡的二叉搜索树并允许它?
  • TreeMultimap常见操作的复杂性是什么?

2 个答案:

答案 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();    
}

文档没有提及操作的任何时间保证,但我希望它以对数时间运行,因为keySetheadSet似乎都返回基础数据的视图而不是构建新收藏品本身。