O código de classificação fornecido parece incompleto e pode não produzir a ordem de classificação esperada. Vamos mergulhar em uma abordagem mais eficiente e abrangente usando lambda do Java 8. código. Considere o seguinte:
Collections.sort(reportList, Comparator.comparing(Report::getReportKey) .thenComparing(Relatório::getStudentNumber) .thenComparing(Report::getSchool));Essa abordagem baseada em lambda sequencia o processo de comparação, classificando efetivamente a lista com base nos campos especificados na ordem de precedência definida pelo método .thenComparing().Collections.sort(reportList, Comparator.comparing(Report::getReportKey)
.thenComparing(Report::getStudentNumber)
.thenComparing(Report::getSchool));
O código original que você forneceu concatena as strings para a chave do relatório, número do aluno e escola:
return (record1.getReportKey() record1.getStudentNumber() record1.getSchool()) .compareTo(record2.getReportKey() record2.getStudentNumber() record2.getSchool());Em vez disso, para uma classificação adequada, você deve comparar os campos independentemente.return (record1.getReportKey() record1.getStudentNumber() record1.getSchool())
.compareTo(record2.getReportKey() record2.getStudentNumber() record2.getSchool());
Aqui está uma versão aprimorada da função sort usando o lambda sintaxe:
Collections.sort(reportList, (record1, record2) -> { int reportKeyComparison = record1.getReportKey().compareTo(record2.getReportKey()); if (reportKeyComparison! = 0) { retornar reportKeyComparison; } int studentNumberComparison = record1.getStudentNumber().compareTo(record2.getStudentNumber()); if (studentNumberComparison! = 0) { retornar estudanteNumberComparação; } return record1.getSchool().compareTo(record2.getSchool());});Este código compara diretamente os campos individuais, fornecendo uma ordem de classificação mais precisa.Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3