2016-07-28 8 views
-1

Ich bin neu in Java 8 und ich habe Probleme, meinen Kopf Umwickeln wie diese Daten in eine Karte zu bekommen -Java 8 toMap für eine Karte <string, Sammlung <String>>

Ich lese aus Daten aus einer Konfigurationsdatei - und es sieht so etwas wie dieses (Beispiel) -

SomeName = { 
    someAttribute = "attributeVal", 
    someImportantAttributeList = ("val1", "val2", "val3"), 
    ... 
} 

SomeName2 = { 
    someAttribute .... 
} 

... 

ich versuche, die Daten in eine Karte zu sammeln, so dass die Karte eine Karte w/Key Seinen Somenamen ist und die Wert ist eine Sammlung von Zeichenfolgen (die "someImportantAttributeList".)

Alle anderen d Ata spielt keine Rolle.

Im Moment habe ich so etwas wie diese:

Map<String, Collection<String>> mapping = configReader.getConfig() 
    .entrySet() 
    .stream() 
    .filter(entry -> entry.getValue().containsKey("someImportantAttributeList") 
    . ???? 

Ich habe Probleme, herauszufinden, wie richtig diese in einen String zur Karte zu bekommen, Sammlung Karte?

Der Stream selbst würde aus Einträgen bestehen, deren Werte Key = SomeName, Wert = eine innere Karte von String/Objekttyp sind. (So ​​in diesem Fall der Schlüssel des Eintrittssomename wäre, wäre der Wert eine andere Zuordnung von String Schlüssel (someAttribute) und Objektwert (der Wert dieses Attributs).

Jede Hilfe wäre sehr geschätzt!

+0

aus [Dokumentation] (http://stackoverflow.com/documentation/java/88/streams/909/creating-a-frequency-map#t=2016072817494356061) – Andrew

Antwort

1
.collect(Collectors.toMap(Entry::getKey, entry -> 
(Collection<String>) entry.getValue().get("someImportantAttributeList")));