Der bereitgestellte Sortiercode erscheint unvollständig und erzeugt möglicherweise nicht die erwartete Sortierreihenfolge. Lassen Sie uns in einen effizienteren und umfassenderen Ansatz mit Java 8-Lambdas eintauchen.
Java 8 vereinfacht die Listensortierung durch die Bereitstellung intuitiver Lambda-Ausdrücke, die eine präzise und leicht lesbare Darstellung ermöglichen Code. Betrachten Sie Folgendes:
Collections.sort(reportList, Comparator.comparing(Report::getReportKey)
.thenComparing(Report::getStudentNumber)
.thenComparing(Report::getSchool));
Dieser Lambda-basierte Ansatz sequenziert den Vergleichsprozess und sortiert die Liste effektiv basierend auf den angegebenen Feldern in der durch die Methode .thenComparing() definierten Rangfolge.
Der von Ihnen bereitgestellte Originalcode verkettet die Zeichenfolgen für den Berichtsschlüssel, die Schülernummer und die Schule:
return (record1.getReportKey() record1.getStudentNumber() record1.getSchool())
.compareTo(record2.getReportKey() record2.getStudentNumber() record2.getSchool());
Stattdessen sollten Sie für eine ordnungsgemäße Sortierung die Felder unabhängig voneinander vergleichen.
Hier ist eine erweiterte Version der Sortierfunktion mit der Lambda-Syntax:
Collections.sort(reportList, (record1, record2) -> {
int reportKeyComparison = record1.getReportKey().compareTo(record2.getReportKey());
if (reportKeyComparison != 0) {
return reportKeyComparison;
}
int studentNumberComparison = record1.getStudentNumber().compareTo(record2.getStudentNumber());
if (studentNumberComparison != 0) {
return studentNumberComparison;
}
return record1.getSchool().compareTo(record2.getSchool());});
Dieser Code vergleicht die einzelnen Felder direkt und sorgt so für eine genauere Sortierreihenfolge.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3