提供された並べ替えコードは不完全なようで、期待どおりの並べ替え順序が生成されない可能性があります。 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