Wie man in groupBy Java Stream limitiert

8

Dies ist mein Kursmodell in der Klasse Course :

%Vor%

Dies ist mein Lehrermodell in der Klasse Teacher :

%Vor%

Ich möchte ein Map<String, List<Course>> erhalten, aber wenn teacherId wiederholt wird, füge einfach das Course in die Liste der Map ein.

Ich verwende groupBy dafür

%Vor%

und es gibt das Ergebnis wie erwartet.

Aber ich möchte limit hier, dass sobald 5 Lehrer gefunden werden, aufhören zu verarbeiten und das Ergebnis zurückgibt.

Wie kann es gemacht werden?

    
Iti Gupta 05.02.2018, 11:26
quelle

2 Antworten

7

Dafür gibt es keine direkte Unterstützung, da das Stoppen und Leben mit möglicherweise unvollständigen Daten eher ungewöhnlich ist.

Eine einfache Lösung, die die ersten fünf Gruppen vollständig sammelt, wäre

%Vor%

Hier sind die Course -Listen dieser ersten fünf Lehrer-IDs vollständig.

Eine Lösung, die nach dem Auffinden der 5. Lehrer-ID wirklich aufhört, wäre einfacher mit einer Schleife:

%Vor%

Aber es macht wenig Sinn, Listen von Course s zu sammeln, wenn Sie diesen Listen später nicht vertrauen können. Beachten Sie, dass sogar das letzte Element der Quellliste zur ersten Lehrer-ID gehören kann. Daher müssen Sie die gesamte Liste bearbeiten, auch wenn Sie nur an der vollständigen Kursliste eines Lehrers interessiert sind.

    
Holger 05.02.2018, 12:21
quelle
2

Nicht sicher, ob Sie das fragen.

%Vor%     
pvpkiran 05.02.2018 12:29
quelle

Tags und Links