Comment utiliser Java 8 Collectionneurs groupingBy pour obtenir une Carte avec une Carte de la collection?

Imaginer ces classes

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
}

J'ai une liste de ceux qui sont Assujettis classes

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"));

Je voudrais obtenir comme résultat de l'utilisation de Collectors.groupingBy() une Carte de regroupement d'abord le Subject objets par Subject.origin, puis regroupées par Subject.type

Obtenir comme résultat un objet comme celui-ci Map<String, Map<Type, List<Subject>>>

OriginalL'auteur alexzm1 | 2015-06-13