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>>>

InformationsquelleAutor alexzm1 | 2015-06-13
Schreibe einen Kommentar