有没有Dart标准库中的函数可以检查列表是否已排序?
当然,我可以很容易地实现自己的函数(以不同的方式),但由于这可能是一个经常需要的操作,因此将此类功能作为
当然,我可以很容易地实现自己的函数(以不同的方式),但由于这可能是一个经常需要的操作,因此将此类功能作为
List
API的一部分或作为其他库中的顶级函数或算法将非常有用。使用Flutter内置的collection
包,您可以使用isSorted
函数。
检查一个整数列表是否已排序的示例:
import 'package:collection/collection.dart';
final list = [1, 2, 3];
list.isSorted((a, b) => a.compareTo(b)); // true
没有直接检查排序的方法,并且它不容易从例如Iterable.fold
或Iterable.reduce
构建。
这不是一个以前被请求过的功能,因此不太可能成为平台库中的内容。
把它放在像package:collection
或package:quiver
这样的包中可能是值得的。
这里有一个你可以使用的函数:
bool isSorted<T>(List<T> list, [int Function(T, T)? compare]) {
if (list.length < 2) return true;
compare ??= (T a, T b) => (a as Comparable<T>).compareTo(b);
T prev = list.first;
for (var i = 1; i < list.length; i++) {
T next = list[i];
if (compare(prev, next) > 0) return false;
prev = next;
}
return true;
}
package:collection
中了。https://pub.dev/documentation/collection/latest/collection/IterableComparableExtension/isSorted.html - rckrd