Wie bekomme ich das häufigste Wort in einer Map und die entsprechende Häufigkeit des Auftretens mit Java 8-Streams?

8

Ich habe eine Klasse IndexEntry , die so aussieht:

%Vor%

Ich speichere Objekte dieser Klasse in einem Guava SortedSetMultimap (das mehrere Werte pro Schlüssel erlaubt), wo ich ein String -Wort auf ein paar IndexEntry s abbilde. Hinter den Kulissen wird jedes Wort einem SortedSet<IndexEntry> zugeordnet.

Ich versuche eine Art indizierte Struktur von Wörtern zu Dokumenten und deren Häufigkeit innerhalb der Dokumente zu implementieren.

Ich weiß, wie man die Zählung des gebräuchlichsten Wortes erhält, aber ich kann das Wort selbst nicht finden.

Hier ist, was ich die Zählung des gebräuchlichsten Begriffes bekommen muss, wobei entries das SortedSetMultimap zusammen mit Hilfsmethoden ist:

%Vor%

Ich versuche Java 8 Features zu lernen, weil sie wirklich nützlich erscheinen. Allerdings kann ich nicht scheinen, dass der Stream so funktioniert, wie ich es möchte. Ich möchte in der Lage sein, sowohl das Wort als auch die Frequenz am Ende des Streams zu haben, aber wenn ich das Wort habe, kann ich sehr leicht das gesamte Vorkommen dieses Wortes erhalten.

Momentan habe ich immer noch Stream<SortedSet<IndexEntry>> , womit ich nichts anfangen kann. Ich weiß nicht, wie man das häufigste Wort ohne die Frequenzen bekommt, aber wenn ich die Frequenz habe, kann ich nicht das entsprechende Wort verfolgen. Ich habe versucht, eine WordFrequencyPair POJO-Klasse zu erstellen, um beide zu speichern, aber dann hatte ich nur ein Stream<SortedSet<WordFrequencyPair>> , und ich konnte nicht herausfinden, wie man das in etwas Nützliches abbildet.

Was vermisse ich?

    
Cache Staheli 13.05.2017, 06:12
quelle

2 Antworten

6

Ich denke, es wäre ein besseres Design, das documentId als Schlüssel von TreeMultimap anstatt von word zu verwenden:

%Vor%

Sie können dann die Methoden, die Sie zuvor hatten, mit den folgenden implementieren:

%Vor%     
Jacob G. 13.05.2017, 06:41
quelle
0

Native Lösung von JDK:

%Vor%

Oder StreamEx

%Vor%     
user_3380739 18.05.2017 00:39
quelle

Tags und Links