Ich habe auch eine Methode, die DistrictDocument nimmt und daraus Slugable erstellt:
private Fizz createFizz(DistrictDocument doc) {
return new Fizz().name(doc.getName()).fizz(doc.getFizz());
}
Gibt es eine Möglichkeit, diese Methode in meinen obigen Stream einzufügen, damit ich sie bekomme Map<String, List<Fizz>> ? Ich habe versucht, groupingBy ein zweites Argument hinzuzufügen, konnte aber keinen richtigen Weg finden und habe immer Kompilierungsfehler erhalten.
Bearbeiten: Was ist, wenn mein createFizz zurückkehrt? List<Fizz> ? Gibt es eine Option, diese Liste in Collectors.mapping zu glätten, weil ich sie immer noch haben möchte Map<String, List<Fizz>> anstatt Map<String, List<List<Fizz>>>
Eran
Sie müssen a verketten Collectors.mapping() Sammler zum Collectors.groupingBy() Kollektor:
d->createFizz(d) Dazu können Sie eine Methodenreferenz verwenden. Zugegebenermaßen kennen wir die Klasse nicht.
– Michael
28. Februar 2018 um 12:25 Uhr
@Michael ja, die Klasse nicht zu kennen war der Hauptgrund, warum ich keine Methodenreferenz verwendet habe.
– Eran
28. Februar 2018 um 12:26 Uhr
Könnten Sie meine Bearbeitung überprüfen? Leider muss createFizz List zurückgeben, und ich kann anscheinend keinen Weg finden, diese Liste zu glätten.
– Doppelmc
28. Februar 2018 um 12:40 Uhr
@doublemc Ich glaube Java 9 hat Collectors.flatMapping, also kannst du schreiben Collectors.flatMapping(d->createFizz(d).stream(),Collectors.toList())));
– Eran
28. Februar 2018 um 12:41 Uhr
Was ist, wenn ich nur Java 8 verwenden kann? Irgendeine Möglichkeit, das zu tun?
– Doppelmc
28. Februar 2018 um 12:43 Uhr
Falls Sie eine doppelt verschachtelte Gruppierung durchführen möchten:
Nehmen wir an, Sie haben eine Sammlung von EducationData Objekte, die den Namen der Schule, des Lehrers und des Schülers enthalten. Aber Sie möchten eine verschachtelte Karte, die wie folgt aussieht: