Предоставленный код сортировки выглядит неполным и может не обеспечить ожидаемый порядок сортировки. Давайте углубимся в более эффективный и комплексный подход с использованием лямбда-выражений Java 8.
Java 8 упрощает сортировку списков, предоставляя интуитивно понятные лямбда-выражения, которые позволяют кратко и легко читать код. Рассмотрим следующее:
Collections.sort(reportList, Comparator.comparing(Report::getReportKey)
.thenComparing(Report::getStudentNumber)
.thenComparing(Report::getSchool));
Этот подход на основе лямбда-выражений упорядочивает процесс сравнения, эффективно сортируя список на основе указанных полей в порядке приоритета, определенном методом .thenComparing().
Предоставленный вами исходный код объединяет строки для ключа отчета, номера учащегося и школы:
return (record1.getReportKey() record1.getStudentNumber() record1.getSchool())
.compareTo(record2.getReportKey() record2.getStudentNumber() record2.getSchool());
Вместо этого для правильной сортировки следует сравнивать поля независимо.
Вот расширенная версия функции сортировки с использованием лямбда-синтаксиса:
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());});
Этот код напрямую сравнивает отдельные поля, обеспечивая более точный порядок сортировки.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3