Konvertieren von HashMultisetString in MapString, Integer

7

Gibt es einen Trick, um HashMultiset<String> in Map<String,Integer> zu konvertieren, außer dass alle Einträge in Set ? iteriert werden? Update: Die Ganzzahl sollte die Anzahl der Zeichenfolgen in der Multimenge darstellen.

    
oshai 13.01.2014, 14:45
quelle

6 Antworten

4

Auf Java 8 aktualisiert, hier ist, was ich als beste Antwort gefunden habe (basierend auf anderen Antworten):

%Vor%

oder:

%Vor%     
oshai 10.09.2015, 22:16
quelle
10

Sie können Maps.asMap . Mit Lambda-Expression (Java 8) wird es ein One-Liner sein:

%Vor%

In Java 7 und darunter:

%Vor%     
Lukasz Wiktor 02.02.2015 10:46
quelle
3

Mit Eclipse-Sammlungen können Sie die Methode toMapOfItemToCount für ein Bag (auch bekannt als Multiset), das ein Map zurückgibt mit einem Schlüssel des gleichen Typs in Bag und Integer count.

Hinweis: Ich bin ein Committer für Eclipse-Sammlungen.

    
Donald Raab 13.01.2014 18:35
quelle
1

Sie könnten einfach die Einträge durchlaufen und das Element und die Zählung in eine Karte einfügen.

%Vor%

Unten ist der (bestandene) JUnit-Test.

%Vor%     
Ray 13.01.2014 19:55
quelle
1

Wenn Sie wirklich vermeiden möchten, dass Sie die Einträge von Multiset durchlaufen, können Sie eine Ansicht als Map erstellen:

%Vor%

In meiner Implementierung habe ich abgelehnt, die Methoden containsValue und values zu implementieren, da diese im Kontext nicht nützlich sind. Falls gewünscht, könnten diese implementiert werden, indem die Einträge durchgeschleift werden und die count der angetroffenen Elemente untersucht werden.

Und wieder sehen Sie, dass dies in diesem JUnit-Fall funktioniert:

%Vor%     
Ray 13.01.2014 20:08
quelle
0

Das ist möglich, aber nur mit Reflektion und es sieht sehr unsicher aus.

%Vor%

Ergebnis:

%Vor%     
Vitaliy 13.01.2014 15:15
quelle

Tags und Links