List.sortedBy
是 Dart 语言中的一个函数,用于根据指定的键对列表进行排序。这个函数接受一个泛型参数 T
和一个函数 as
,其中 as
函数用于从列表中的每个元素提取一个可比较的值。
List.sortedBy
函数的类型定义如下:
List<T>.sortedBy<R extends Comparable<R>>(R Function(T) key)
其中:
T
是列表元素的类型。R
是用于比较的值类型,必须是 Comparable
的子类。假设我们有一个学生列表,每个学生有一个年龄属性,我们可以使用 sortedBy
函数按年龄对学生进行排序:
class Student {
final String name;
final int age;
Student(this.name, this.age);
}
void main() {
List<Student> students = [
Student('Alice', 20),
Student('Bob', 18),
Student('Charlie', 22),
];
List<Student> sortedStudents = students.sortedBy((student) => student.age);
print(sortedStudents.map((e) => e.name).join(', ')); // 输出: Bob, Alice, Charlie
}
如果你发现 List.sortedBy
函数不会操作该列表,可能有以下原因:
sortedBy
函数返回一个新的排序后的列表,而不是修改原列表。如果你希望修改原列表,可以使用 sort
方法。Comparable
接口)。void main() {
List<Student> students = [
Student('Alice', 20),
Student('Bob', 18),
Student('Charlie', 22),
];
// 使用 sortedBy 函数
List<Student> sortedStudents = students.sortedBy((student) => student.age);
print(sortedStudents.map((e) => e.name).join(', ')); // 输出: Bob, Alice, Charlie
// 如果希望修改原列表,可以使用 sort 方法
students.sort((a, b) => a.age.compareTo(b.age));
print(students.map((e) => e.name).join(', ')); // 输出: Bob, Alice, Charlie
}
通过以上解释和示例代码,你应该能够理解 List.sortedBy
函数的使用方法及其常见问题,并能找到相应的解决方法。
领取专属 10元无门槛券
手把手带您无忧上云