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 显然没有这个功能,那么我自己该如何实现呢?
在寻找这个问题的答案时,我的主要困难是知道复制列表的正确方法,这并不像看起来那么明显。我找到了答案,所以我也在下面以问答形式发布了我原来问题的答案。
您可以创建一个新的排序列表而不影响原始列表,如下所示:
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)
您可以在此处阅读有关复制列表的更多信息。
| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |