2009-08-25 25 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

相关问题