具有多个字段的Collections.sort

我有一个包含三个字段(所有字符串类型)的“报表”对象列表-


ReportKey

StudentNumber

School

我有一个排序代码,就像-


Collections.sort(reportList, new Comparator<Report>() {


@Override

public int compare(final Report record1, final Report record2) {

      return (record1.getReportKey() + record1.getStudentNumber() + record1.getSchool())                      

        .compareTo(record2.getReportKey() + record2.getStudentNumber() + record2.getSchool());

      }


});

由于某种原因,我没有排序顺序。一个建议在字段之间插入空格,但是为什么呢?


您认为代码有什么问题吗?


喵喵时光机
浏览 1161回答 3
3回答

慕田峪4524236

您认为代码有什么问题吗?是。为什么在比较它们之前将三个字段加在一起?我可能会做这样的事情:(假设字段按您希望排序的顺序排列)@Override public int compare(final Report record1, final Report record2) {&nbsp; &nbsp; int c;&nbsp; &nbsp; c = record1.getReportKey().compareTo(record2.getReportKey());&nbsp; &nbsp; if (c == 0)&nbsp; &nbsp; &nbsp; &nbsp;c = record1.getStudentNumber().compareTo(record2.getStudentNumber());&nbsp; &nbsp; if (c == 0)&nbsp; &nbsp; &nbsp; &nbsp;c = record1.getSchool().compareTo(record2.getSchool());&nbsp; &nbsp; return c;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java