[英]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.