繁体   English   中英

Dart / Flutter 按多个字段排序列表

[英]Dart / Flutter Sort List by Multiple Fields

我正在写我的问题,但在发布之前找到了解决方案。 Dart 中有很多关于如何通过比较两个字段来对列表进行排序的示例。 但是,我仍然发现,至少对我来说,要弄清楚按两个以上的字段进行排序并不简单。 我认为值得在一个单独的主题下分享它。

以下是我如何按三个或更多字段对 Dart 中的列表进行排序:

class Student {
  String name;
  String course;
  int age;

  Student(this.name, this.course, this.age);
  
  @override
  String toString() {
    return '{$name, $course, $age}';
  }
}

main() {
  List<Student> students = [];
  students.add(Student('Katherin', 'Dart Potions', 21));
  students.add(Student('Adam Sr', 'Dart Magic', 40));
  students.add(Student('Adam Jr', 'Dart Magic', 15));

  students.sort(
    (a, b) {
      final int sortByCourse = -a.course.compareTo(b.course); // the minus '-' for descending
      if (sortByCourse == 0) {
        final int sortByName = a.name.compareTo(b.name);
        if (sortByName == 0) {
          return a.age.compareTo(b.age);
        }
        return sortByName;
      }
      return sortByCourse;
    },
  );
  
  print('Sort DESC by Course, then ASC by Name and then ASC by Age:\n ${students.toString()}');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM