2009-08-25 28 views
4

Google Collections包含Multiset接口和TreeMultiset類,但我很驚訝地發現沒有相應的SortedMultiset接口。爲什麼Google Collections中沒有SortedMultiset?

類似的東西對建模離散概率分佈非常有用。

在我自己嘗試實現它之前,我想知道是否有一個特殊的理由讓它脫離出來,例如,的MultisetCollection不變可能違反,或固有的性能問題等


編輯:我沒有意識到它最初但是這實際上是3個獨立的請求:

  1. 更改了一種方法的返回類型(TreeMultiset.entrySet
  2. 一個匹配現有功能的新接口TreeMultiset
  3. 一對新的方法來計算樹的分支計數
+0

你爲什麼需要實現它?它與「TreeMultiset」有什麼不同? – notnoop 2009-08-25 22:11:47

+0

它將具有與TreeMultiset缺少的headSet/tailSet/subSet等價的內容。我不確定是否可以通過擴展TreeMultiset來有效地實現這些。 – finnw 2009-08-25 22:30:14

+0

另外它的'entrySet()'方法將返回一個'SortedSet'而不是一個普通的'Set'。 – finnw 2009-11-06 15:59:20

回答

7

我認爲這只是沒有人需要它,所以我們還沒有寫它。這是我會考慮的。

+2

對於任何人重讀這個問題,從版本11起有一個SortedMultiset。 – 2012-01-17 00:48:16

0

TreeMultiset.elementSet()返回一個SortedSet,它可能提供了一些您想要的功能。

ETA:finnw,您請求的SortedMultiset方法不會爲「Multiset中多少個元素少於42?」這個問題提供明顯更快的答案。 TreeMultiset的實現仍然需要遍歷multiset條目並對相關元素的總數進行求和。

+0

差不多。有一件事情不能有效地回答「我Multiset 中有多少元素少於42?」元素集(及其headSet/tailSet方法)將爲您提供小於42的不同值的數量,但不包括元素的數量。 – finnw 2009-11-28 22:28:51

相關問題