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

nbr*_*bro 5 sorting dart

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

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

lrn*_*lrn 2

没有方法可以直接检查是否已排序,而且它也不容易从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;
}
Run Code Online (Sandbox Code Playgroud)