从Google Collections中查找Multiset中的前N个元素?

dfr*_*kow 13 java multiset guava

谷歌集合 多重集是一组元素的每一个都具有一个计数(即可能存在多次).

我不能告诉你我想做多少次以下事情

  1. 制作直方图(完全是Multiset)
  2. 从直方图中按计数获取前N个元素

示例:前10个URL(按提到的#次),前10个标签(按#次应用),...

鉴于Google Collections Multiset,做#2的规范方法是什么?

是一篇关于它的博客文章,但该代码并不是我想要的.首先,它返回所有内容,而不仅仅是前N个.其次,它会复制(是否可以避免复制?).第三,我通常想要一种确定性的排序,即如果计数相等则是抢七.其他尼特:它不是静止的等等.

Jar*_*evy 4

我编写的方法具有您所要求的基本功能,只是它们执行复制并且缺乏确定性的平局打破逻辑。它们目前是 Google 内部的,但我们可能会在某个时候将它们开源。这个 Guava问题有方法签名。

他们的算法类似于博客文章:对条目列表进行排序。使用更好的选择算法会更快,但也更复杂。

编辑:从 Guava 11 开始,这是实现的