在 Dart 中检查列表是否排序的常用方法是什么?



Dart 标准库中是否有一个函数可以让我检查列表是否排序?

当然,我可以轻松地实现我的(以不同的方式(,但由于这可能是经常需要的操作,因此将这样的函数作为ListAPI 的一部分或作为其他库中的顶级函数或算法可能很有用。

使用collection包(包含在 Flutter 中(,您可以使用isSorted函数。

检查整数列表是否排序的示例:

import 'package:collection/collection.dart'; 
final list = [1, 2, 3];
list.isSorted((a, b) => a.compareTo(b)); // true

没有直接检查排序的方法,而且它不容易从Iterable.foldIterable.reduce构建。 这不是以前请求过的功能,因此不太可能放入平台库中。 可能值得将其放在像package:collectionpackage: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;
}

最新更新