ich ein Stream< Map< K, V > >
haben und ich versuche, diese Karten zusammen zu fusionieren, sondern erhält doppelte Werte in einer Liste, so wäre die letzte Art Map< K, List<V> >
sein. Gibt es eine Möglichkeit, dies zu tun? Ich weiß, dass der Kollektor toMap
eine binäre Funktion hat, um im Grunde zu wählen, welcher Wert zurückgegeben wird, aber kann er die konvertierte Liste verfolgen?einen Strom von Karte <K,V> auf Karte <K,List<V>>
dh
wenn a
ist eine Stream< Map< String, Int > >
a.flatMap(map -> map.entrySet().stream()).collect(
Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (val1, val2) -> ??
);
können Sie Verwende ['groupingBy (Function, Collector)'] (https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html#groupingBy-java.util.function.Function- java.util.stream.Collector-) und lassen Sie 'HashMap :: new' weg. Für diejenigen, die Methodenreferenzen bevorzugen, können Sie auch 'a.map (Map :: entrySet) .flatMap (Set :: stream)' verwenden. – shmosel
Danke Ich habe meine Antwort bearbeitet. – NoDataFound