Heim >Java >javaLernprogramm >Wie berechnet man Maximum und Minimum in Java mithilfe von Streams?
In diesem Beitrag werden wir sehen, wie man die Java Streams API verwendet, um das Maximum und Minimum einer Sammlung von Elementen zu berechnen. Dazu verwenden wir die Methoden max() und min() der Stream-Klasse. Mit diesen Methoden können wir mithilfe eines benutzerdefinierten Komparators das Maximum bzw. Minimum einer Sammlung von Elementen ermitteln.
Angenommen, wir haben eine Liste vom Typ List
public record Exam(String name, Double grade) { }
var exams = Arrays.asList( new Exam("Alice", 9.5), new Exam("Bob", 6.0), new Exam("Charlie", 7.5), new Exam("David", 8.0), new Exam("Eve", 8.5) );
In neueren Java-Versionen können Sie zu diesem Zweck die Methoden max() und min() der Stream-Klasse verwenden, indem Sie einen benutzerdefinierten Komparator übergeben und ein optionales
Beginnen wir mit der Erstellung eines benutzerdefinierten Komparators vom Typ Comparator
Comparator<Exam> byGradeAsc = (e1, e2) -> (int) (e1.grade() - e2.grade());
Dieser Komparator gibt beispielsweise eine negative Zahl zurück, wenn die Note der ersten Prüfung niedriger als die der zweiten ist, null, wenn sie gleich sind, und eine positive Zahl, wenn die Note der ersten Prüfung höher ist als die der zweiten Zweitens können Sie für weitere Informationen diesen Link zu einem Beitrag konsultieren, der erklärt, wie die Comparator-Schnittstelle funktioniert.
Dieser Komparator kann auf andere Weise definiert werden, indem die Methode „VergleichDouble()“ der Klasse „Comparator“ verwendet wird, die es uns ermöglicht, einen Komparator aus einer Funktion zu erstellen, die einen Double-Wert aus einem Objekt extrahiert, ohne den Komparator manuell schreiben zu müssen.
Comparator<Exam> byGradeAscClean = Comparator.comparingDouble(Exam::grade);
In dieser Definition wird dem Komparator mitgeteilt, dass er ein Objekt vom Typ Exam nehmen, den Wert der Grade-Eigenschaft extrahieren und die Werte mithilfe eines Double-Datentyps vergleichen muss.
Diese beiden Möglichkeiten sind gleichwertig und können austauschbar verwendet werden. Die zweite Möglichkeit ist zunächst vielleicht etwas schwieriger zu verstehen, aber sobald Sie sie verstanden haben, ist es einfacher, sie zu schreiben und zu lesen.
Da Sie nun den Komparator haben, müssen Sie ihn nur noch in den Methoden max() und min() verwenden, um die Prüfung mit der höchsten bzw. niedrigsten Punktzahl zu erhalten.
public record Exam(String name, Double grade) { }
In diesem Fall erhalten Sie eine optionale
var exams = Arrays.asList( new Exam("Alice", 9.5), new Exam("Bob", 6.0), new Exam("Charlie", 7.5), new Exam("David", 8.0), new Exam("Eve", 8.5) );
Oder übergeben Sie einfach als Argument eine Referenzmethode, um den Wert von Optional zu drucken. Wenn Optional leer ist, wird nichts gedruckt, andernfalls wird der Wert von Optional durch Aufrufen der toString()-Methode des Exam-Objekts gedruckt .
Comparator<Exam> byGradeAsc = (e1, e2) -> (int) (e1.grade() - e2.grade());
Auf diese Weise können Sie mithilfe der Java Streams API und der Comparator-Schnittstelle das Maximum und Minimum einer Sammlung von Elementen erhalten.
Das obige ist der detaillierte Inhalt vonWie berechnet man Maximum und Minimum in Java mithilfe von Streams?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!