Come posso limitare groupBy ad ogni voce?Limit groupBy in Java 8
Per esempio (basato su questo esempio: stream groupBy):
studentClasses.add(new StudentClass("Kumar", 101, "Intro to Web"));
studentClasses.add(new StudentClass("White", 102, "Advanced Java"));
studentClasses.add(new StudentClass("Kumar", 101, "Intro to Cobol"));
studentClasses.add(new StudentClass("White", 101, "Intro to Web"));
studentClasses.add(new StudentClass("White", 102, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 106, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 103, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 104, "Advanced Web"));
studentClasses.add(new StudentClass("Sargent", 105, "Advanced Web"));
Questo metodo di ritorno semplice gruppo:
Map<String, List<StudentClass>> groupByTeachers = studentClasses
.stream().collect(
Collectors.groupingBy(StudentClass::getTeacher));
Che cosa devo fare per limitare le collezioni restituiti? Supponiamo che voglio solo le prime classi N per ogni insegnante. Come può essere fatto?
Che cosa si intende per prima ?, Ti, le classi con il più basso numero della classe, i nomi più bassi ASCIIBetically, o qualsiasi selezione casuale di N classi. Nota: l'insieme di classi può essere non ordinato. –
@PeterLawrey Hai ragione, non ho detto questo, per me l'ordine è irrilevante, ma se vogliamo una soluzione più completa e generale - sarei felice se aggiungessi un esempio di ordinamento (con uno dei campi) – yossico