質問を「マルチセットの最初の項目を選択するにはどうすればよいですか?」と言い換えたいと思うかもしれません。マルチセットはすでに周波数に従って並べ替えられているようです。
マルチセット 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 メソッドを使用すると、遅すぎることがわかります。ループの 1 つのインスタンスでは、ループなしで使用すると平均 40 ミリ秒かかるのに対し、80 ミリ秒以上かかります。大規模なループでは、単純な反復を優先する必要がありますか?
更新2:次を使用して動作しました:
myList.count(myList.entrySet().iterator().next().getElement())
パフォーマンスへの影響はほとんどありません。何か良い方法はないかと今でも考えています。
Sidenote : 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