乐闻世界logo
搜索文章和话题

How to sort Map's keys in Dart

2 个月前提问
2 个月前修改
浏览次数21

1个答案

1

在Dart中,Map 是一个无序的集合,它的键和值没有特定的顺序。如果希望按照键来排序一个 Map,你可以通过将 Map 的键转换为一个列表,对列表进行排序,然后根据排序后的列表重新构建一个 Map 来实现。

下面是一个具体的例子,展示了如何按照键对 Map 进行排序:

dart
void main() { Map<String, int> unsortedMap = { 'banana': 3, 'apple': 1, 'orange': 2 }; // 将Map的键提取到一个列表中 var keys = unsortedMap.keys.toList(); // 对键列表进行排序 keys.sort(); // 根据排序后的键列表创建一个新的Map Map<String, int> sortedMap = { for (var key in keys) key: unsortedMap[key]! }; print(sortedMap); }

在这个例子中,我们首先创建了一个包含水果和对应数量的 Map。然后我们使用 .keys 获取所有的键,并将它们转换为一个列表。我们使用 sort() 方法来对键进行排序。最后,我们使用 Dart 的集合字面量(在这里是 map 字面量)和 for 循环来根据排序后的键创建一个新的 Map

输出将是:

shell
{apple: 1, banana: 3, orange: 2}

这个 Map 是按照键的字母顺序排序的。

此方法适用于任何类型的键,只要键可以被排序。如果你的键是自定义对象,你可能需要提供一个比较函数给 sort() 方法,确保正确的排序。

2024年7月18日 20:14 回复

你的答案