Wie kann ich groupBy durch jeden Eintrag begrenzen?Limit groupBy in Java 8
Zum Beispiel (in diesem Beispiel basieren: 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"));
Diese Methode einfache Gruppe zurück:
Map<String, List<StudentClass>> groupByTeachers = studentClasses
.stream().collect(
Collectors.groupingBy(StudentClass::getTeacher));
Was passiert, wenn ich die zurückgegebenen Sammlungen beschränken möchten? Nehmen wir an, ich möchte nur die ersten N Klassen für jeden Lehrer. Wie kann es gemacht werden?
Was meinen Sie zuerst ?, Haben Sie bedeutet, dass die Klassen mit der niedrigsten Klassennummer, den niedrigsten Namen ASCIIBetically oder jede zufällige Auswahl von N Klassen. Hinweis: Die Menge der Klassen kann ungeordnet sein. –
@PeterLawrey Sie haben Recht, ich habe das nicht erwähnt, für mich ist die Reihenfolge irrelevant, aber wenn wir eine gründlichere und allgemeine Lösung wollen - ich bin glücklich, wenn Sie ein Sortierbeispiel hinzufügen (durch eines der Felder) – yossico