Wie verwenden von Java 8 Kollektoren groupingBy zu bekommen eine Karte mit einer Karte aus der Kollektion?
Vorstellen, diese Klassen
class Subject {
private int id;
private Type type;
private String origin;
private String name;
Subject(int id, Type type, String origin, String name) {
this.id = id;
this.type = type;
this.origin = origin;
this.name = name;
}
//Getters and Setters
}
enum Type {
TYPE1,
TYPE2
}
Habe ich eine Liste von Personen in Klassen
List<Subject> subjects = Arrays.asList(
new Subject(1, Type.TYPE1, "South", "Oscar"),
new Subject(2, Type.TYPE2, "South", "Robert"),
new Subject(3, Type.TYPE2, "North", "Dan"),
new Subject(4, Type.TYPE2, "South", "Gary"));
Möchte ich erhalten als Ergebnis der Verwendung Collectors.groupingBy()
eine Karte, die Gruppierung zuerst die Subject
Objekte durch Subject.origin
und dann gruppiert nach Subject.type
Immer als Ergebnis ein Objekt wie dieses Map<String, Map<Type, List<Subject>>>
Du musst angemeldet sein, um einen Kommentar abzugeben.
groupingBy
akzeptiert eine downstream-Sammler, die kann auch eingroupingBy
:.collect(groupingBy(DishIngredientMass::getDishId, groupingBy(DishIngredientMass::getIngredientId, summingDouble(DishIngredientMass::getCookMass))))