gpt4 book ai didi

java - 选择多重集中出现次数最多的元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:29:29 26 4
gpt4 key购买 nike

我可能想将问题改写为“如何选择 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

最佳答案

在您的问题和发布的其他答案之间有很多选择,但其中许多似乎取决于 .get(0).iterator( ).next() 将为您提供最频繁出现的元素。不会的!

您仅有的两个合适的选择是 Multisets.copyHighestCountFirst(bag).elementSet().iterator().next(),如您所说,这很浪费,或者遍历 entrySet 手动检查每一个,看看它是否是迄今为止最频繁的。

您应该提交 Guava 功能请求以提取最常见的元素。我不能保证它会发生什么,但它值得请求。

关于java - 选择多重集中出现次数最多的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com