Dart 中的非变异排序列表

Sur*_*gch 7 sorting collections dart

我可以在 Dart 中对这样的列表进行排序:

final myList = [6, 3, 7, 1, 0, 2];
myList.sort();
Run Code Online (Sandbox Code Playgroud)

然而,这是一种破坏性的排序,因为它会就地改变它。我想做这样的事情:

final myList = [6, 3, 7, 1, 0, 2];
final newList = myList.sorted();
Run Code Online (Sandbox Code Playgroud)

我的列表保持不变但newList包含排序列表。Dart 显然没有这个功能,那么我自己该如何实现呢?

在寻找这个问题的答案时,我的主要困难是知道复制列表的正确方法,这并不像看起来那么明显。我找到了答案,所以我也在下面以问答形式发布了我原来问题的答案。

Sur*_*gch 6

您可以创建一个新的排序列表而不影响原始列表,如下所示:

final myList = [6, 3, 7, 1, 0, 2];
final sorted = myList.toList()..sort();
Run Code Online (Sandbox Code Playgroud)

调用toList()会复制列表。这..是为了获取对列表本身的引用,因为它sort()是一个 void 函数。这给出了相同的结果:

final sorted = myList.toList();
sorted.sort();
Run Code Online (Sandbox Code Playgroud)

打印两个列表的值会得到以下结果:

print(myList); // [6, 3, 7, 1, 0, 2]
print(sorted); // [0, 1, 2, 3, 6, 7]
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读有关复制列表的更多信息。