📅  最后修改于: 2023-12-03 15:00:20.200000             🧑  作者: Mango
在Dart中,我们可以通过内置的库函数以及自定义的比较方法对列表进行排序。这种排序可以针对数字,字符串,对象等各种类型。
使用Dart内置的库函数List.sort
可以对列表进行基本排序操作。以下是一个示例:
void main() {
List<int> numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5];
numbers.sort();
print(numbers);
}
输出结果为:[1, 1, 2, 3, 4, 5, 5, 6, 9]
,表示列表已经按升序排序。
如果需要降序排序,可以使用List.reversed
函数来实现。以下是一个示例:
void main() {
List<int> numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5];
numbers.sort();
numbers = numbers.reversed.toList();
print(numbers);
}
输出结果为:[9, 6, 5, 5, 4, 3, 2, 1, 1]
,表示列表已经按降序排序。
在某些情况下,需要使用自定义的比较方法对列表进行排序。例如,我们可能需要根据对象的特定字段来对对象列表进行排序。以下是一个示例:
class Person {
String name;
int age;
Person(this.name, this.age);
@override
String toString() {
return '($name, $age)';
}
}
void main() {
List<Person> persons = [
Person('Alice', 25),
Person('Bob', 20),
Person('Charlie', 30),
];
persons.sort((a, b) => a.age.compareTo(b.age));
print(persons);
}
输出结果为:[(Bob, 20), (Alice, 25), (Charlie, 30)]
,表示对象列表已经按照年龄升序排序。
需要注意的是,自定义比较函数需要返回整数类型,正数表示a>b,0表示a=b,负数表示a<b。