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

5
有没有Dart标准库中的函数可以检查列表是否已排序?
当然,我可以很容易地实现自己的函数(以不同的方式),但由于这可能是一个经常需要的操作,因此将此类功能作为List API的一部分或作为其他库中的顶级函数或算法将非常有用。

2
我非常确定标准库中没有任何东西。 - Günter Zöchbauer
2个回答

4

使用Flutter内置的collection包,您可以使用isSorted函数。

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

import 'package:collection/collection.dart'; 

final list = [1, 2, 3];
list.isSorted((a, b) => a.compareTo(b)); // true

2

没有直接检查排序的方法,并且它不容易从例如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;
}

现在它已经包含在 package:collection 中了。https://pub.dev/documentation/collection/latest/collection/IterableComparableExtension/isSorted.html - rckrd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接