So habe ich diesen Code, dass „Werke“ (einige Namen der Einfachheit halber zu ersetzen):Mit groupingBy in eine verschachtelte Karte, aber das Sammeln auf eine andere Art von Objekt
Map<String, Map<String, ImmutableList<SomeClassA>>> someMap =
someListOfClassA.stream()
.filter(...)
.collect(Collectors.groupingBy(SomeClassA::someCriteriaA,
Collectors.groupingBy(SomeClassA::someCriteriaB, GuavaCollectors.toImmutableList()
)
));
Allerdings mag ich diesen Code ändern so dass die innere Sammlung von SomeClassB nach dem Gruppieren von SomeClassA Feldern ist. Zum Beispiel aussehen, wenn die Klassen wie folgt aus:
vorausgesetzt, sie haben beide alle args Bauer
class SomeClassA {
String someCriteriaA;
String someCriteriaB;
T someData;
String someId;
}
class SomeClassB {
T someData;
String someId;
}
Und es gibt eine Methode irgendwo:
public static Collection<SomeClassB> getSomeClassBsFromSomeClassA(SomeClassA someA) {
List<Some List of Class B> listOfB = someMethod(someA);
return listOfB; // calls something using someClassA, gets a list of SomeClassB
}
Ich möchte die die resultierenden Listen glätten SomeClass Bs in
Map<String, Map<String, ImmutableList<SomeClassB>>> someMap =
someListOfClassA.stream()
.filter(...)
. // not sure how to group by SomeClassA fields but result in a list of SomeClassB since one SomeClassA can result in multiple SomeClassB
Ich bin mir nicht sicher, wie das in den Code abov passen würde e. Wie kann ich eine Reihe von Listen basierend auf SomeClassB in einer einzigen Liste für alle Werte von SomeClassA sammeln? Wenn ein einzelnes ClassA einem einzelnen ClassB zugeordnet wird, weiß ich, wie es mit Collectors.mapping zum Laufen gebracht wird, aber da jedes ClassA zu mehreren ClassBs führt, bin ich mir nicht sicher, wie es funktioniert.
Irgendwelche Ideen würden geschätzt. Vielen Dank!
In Java 9 Sie haben [ 'Collectors.flatMapping()'] (http://download.java.net/java/jdk9/ docs/api/java/util/stream/Collectors.html # flatMapping-java.util.function.Function-java.util.stream.Collector-), wodurch Sie die Ergebnisse unterhalb der Gruppierung reduzieren können. – shmosel