Java 8 Lambda Collectors.summing Lange mehrere Spalten?

8

Ich habe POJO Definition wie folgt:

%Vor%

Zur Zeit habe ich einen Lambda-Ausdruck für die Gruppe By 'deptName' as:

%Vor%

Frage Ist es möglich, Summe mehr als eine Spalte zu verwenden? Ich muss die Summe in beiden Feldern salary and bonus in einem Ausdruck anstatt in mehreren Werten berechnen?

SQL-Repräsentation wäre:

%Vor%     
gpa 23.03.2017, 16:39
quelle

3 Antworten

6

Sie müssen eine zusätzliche Klasse erstellen, die Ihre 2 zusammengefassten Zahlen enthält (Gehalt und Bonus). Und ein benutzerdefinierter Collector.

Nehmen wir an, Sie haben

%Vor%

für das Halten von Summen. Dann brauchst du einen Sammler wie diesen:

%Vor%

Mit diesen Klassen können Sie Ihre Ergebnisse wie

sammeln %Vor%

Was druckt das:

%Vor%     
esin88 23.03.2017, 17:22
quelle
3

Ich weiß, dass du deine Antwort hast, aber hier ist mein Take (ich schrieb, während der andere gepostet wurde). Es gibt bereits ein Pair in Java in Form von AbstractMap.SimpleEntry .

%Vor%     
Eugene 23.03.2017 17:38
quelle
1

Gruppierung nach ist eine Terminaloperation, die eine Map ergibt. Die Karte, die von der groupingBy im folgenden Code erstellt wird, ist ein Map<String, List<EmployeeDetails>> . Ich erstelle einen neuen Stream mit der Map-Methode entrySet. Ich erstelle dann eine neue Map mit Collectors.toMap . Bei diesem Ansatz wird die Verkettung von Methoden verwendet, um das Erstellen einer anderen Klasse und das Erstellen von präziseren Code zu vermeiden.

%Vor%     
John Morris 23.03.2017 18:10
quelle

Tags und Links