2013-03-16 33 views
0
  • 是否有可能從Google番石榴延伸TreeMultimap得到一些奇數ceiling功能? ceiling(key)將返回大於給定值的最小鍵。 (我知道我可以得到一個有序的集合視圖,只是看看,但我更喜歡有時間複雜性的東西,就像平衡二叉搜索樹提供的那樣)
  • 是否有任何其他庫會實現平衡二叉搜索樹並允許那?
  • TreeMultimap常見操作的複雜性是什麼?

回答

3
multimap.keySet().ceiling(key) 

做它很直接,但你需要的Java 6和最近發佈番石榴,14.0,這是當TreeMultimap.keySet()started returning NavigableSet。複雜度爲O(日誌#鍵),完全如您所料。

+0

這很好,謝謝。如果我想要在鍵值對上使用某種迭代器,例如: (0,1),(2,1),(2,4),(5,1) 假設我目前處於(2,1)。然後,天花板(2)將返回(2,4)。天花板(3)將返回(5,1)。天花板(1)將返回(2,1)。 – user1377000 2013-03-17 08:51:01

+0

不適用於當前的API。 – 2013-03-17 16:38:34

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出現返回意見的基礎數據,而不是建立新的收藏他們自己。

+0

我認爲這是相當keyset.tailsS​​et(鍵)和head.first():) – user1377000 2013-03-16 21:41:14