我可能想将问题改写为“如何选择 Multiset 中的第一个项目?” 因为看起来 Multiset 已经按照频率排序了。
我有一个 Multiset myList = Multiset.create();
[maa00 mfnt11 malignlft mbold mlt18 mfl x 3, caa00 cfnt11 calignlft cbold clt17 cfl]
我找不到像 myList.getIndex(0) 这样的方法。请注意,最后,我需要具有最大频率的元素的计数。
有没有一个衬里?还是我必须做那个迭代?
更新:我正在使用以下方法获得最大频率:
myList.count(Multisets.copyHighestCountFirst(myList).asList().get(0)));
但这太慢了。你能建议一下,我到底应该使用什么?
更新 1:使用上面的 copyHighestCountFirst 方法被证明太慢了。在循环的一个实例中,它需要 80 多毫秒,而没有它的情况下平均需要 40 毫秒。在大循环中,我应该更喜欢简单的迭代吗?
更新 2:让它工作使用:
myList.count(myList.entrySet().iterator().next().getElement())
对性能的影响几乎为零。我仍然想知道是否有更好的方法来做到这一点。
旁注:在 Python 中,我做了同样的事情:
j = defaultdict(int)
for k in clList:
j[k] +=1
result1 = max(j.iteritems(), key=lambda x:x[1]) //count of frequency of item with max count