Posso riformulare la domanda in "Come selezionare il primo elemento in un multiset?" perché sembra che Multiset sia già ordinato in base alle frequenze.Seleziona elemento con occorrenza massima in Multiset
I have a Multiset myList = Multiset.create();
[maa00 mfnt11 malignlft mbold mlt18 mfl x 3, caa00 cfnt11 calignlft cbold clt17 cfl]
non ho potuto trovare alcun metodo come myList.getIndex (0). Nota, alla fine, ho bisogno del numero di elementi che ha la frequenza massima.
C'è qualche rivestimento per questo? O devo fare quell'iterazione?
Update: sto ottenendo la massima frequenza utilizzando:
myList.count(Multisets.copyHighestCountFirst(myList).asList().get(0)));
Ma questo è troppo lento. Potete per favore suggerire, che cosa dovrei usare esattamente?
Aggiornamento 1: l'utilizzo del metodo copyHighestCountFirst è troppo lento. In un'istanza del ciclo, ci vogliono 80 + millisecondi contro la media di 40 millisecondi senza. In loop grandi, dovrei preferire l'iterazione semplice?
Aggiornamento 2: ottenuto che funziona con:
myList.count(myList.entrySet().iterator().next().getElement())
Senza quasi a zero impatto sulle prestazioni. Mi chiedo ancora se ci sia un modo migliore per farlo.
Nota a margine: In Python ho fatto lo stesso con:
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
I ho capito adesso. Grazie. – akshayb