1. 快速解决方案
谢谢你的提问!您可以对列表进行排序String
像这样:
main() {
final List<String> fruits = <String>['bananas', 'apples', 'oranges'];
fruits.sort();
print(fruits);
}
上面的代码打印:
[apples, bananas, oranges]
2. 稍微高级一点的用法
请注意sort()
不返回值。它对列表进行排序而不创建新列表。如果你想在同一行中排序和打印,你可以使用方法级联:
print(fruits..sort());
为了获得更多控制,您可以定义自己的比较逻辑。这是根据价格对水果进行排序的示例。
main() {
final List<String> fruits = <String>['bananas', 'apples', 'oranges'];
fruits.sort((a, b) => getPrice(a).compareTo(getPrice(b)));
print(fruits);
}
让我们看看这里发生了什么。
A List
has a sort https://api.dartlang.org/apidocs/channels/be/dartdoc-viewer/dart:core.List#id_sort方法,其中有一个optional参数:a比较器 http://api.dartlang.org/docs/continuous/dart_core/Comparator.html。比较器是一个typedef
或函数别名。在本例中,它是一个函数的别名,如下所示:
int Comparator(T a, T b)
来自文档:
比较器函数表示这样的总排序:如果 a 小于 b,则返回负整数;如果 a 等于 b,则返回零;如果 a 大于 b,则返回正整数。
3. 如何使用自定义对象列表来做到这一点
此外,如果您创建由自定义对象组成的列表,则可以添加Comparable<T>
as a mixin
或作为继承(extends
),然后覆盖compareTo
方法,为了重新创建标准行为sort()
获取您的自定义对象列表。欲了解更多信息,请查看其他相关的 StackOverflow 答案 https://stackoverflow.com/a/55308336/4756173.