Zählt die Vorkommen jedes Elements in einer Liste [Liste [T]] in Scala

8

Angenommen, Sie haben

%Vor%

wo z.B. Liste ("eins", "zwei") stellt ein Dokument dar, das die Begriffe "eins" und "zwei" enthält, und Sie möchten für jeden Ausdruck eine Karte mit der Dokumenthäufigkeit erstellen, d. H. In diesem Fall

%Vor%

Wie würdest du das in Scala machen? (Und auf eine effiziente Weise, einen viel größeren Datensatz vorausgesetzt.)

Mein erster Java-ähnlicher Gedanke ist die Verwendung einer veränderlichen Karte:

%Vor%

was gut genug funktioniert, aber ich frage mich, wie Sie das auf eine "funktionalere" Weise tun könnten, ohne auf eine veränderbare Karte zurückzugreifen?

    
Mirko N. 28.08.2012, 19:36
quelle

2 Antworten

12
%Vor%

Was für ein Zugwrack!

[Bearbeiten]

Ah, das ist besser!

%Vor%     
Landei 28.08.2012, 21:19
quelle
18

Versuchen Sie Folgendes:

%Vor%

Wenn Sie häufig auf die Anzahl zugreifen, sollten Sie mapValues vermeiden, da es "faul" ist und die Größe bei jedem Zugriff neu berechnen würde. Diese Version gibt Ihnen das gleiche Ergebnis, erfordert aber keine Neuberechnung:

%Vor%

Die Funktion identity bedeutet nur x => x .

    
dhg 28.08.2012 19:37
quelle

Tags und Links