41

我对在 Dart 中排序 Map 的键有疑问。

Map<String, Object> map = new Map();

如何对地图中的键进行排序?或对 Iterable map.keys 进行排序。

4

4 回答 4

74

在 Dart 中,它被称为SplayTreeMap

import "dart:collection";

main() {
  final SplayTreeMap<String, Map<String,String>> st = 
      SplayTreeMap<String, Map<String,String>>();

  st["yyy"] = {"should be" : "3rd"};
  st["zzz"] = {"should be" : "last"};
  st["aaa"] = {"should be" : "first"};
  st["bbb"] = {"should be" : "2nd"};

  for (final String key in st.keys) {
    print("$key : ${st[key]}");
  }
}

// Output:
// aaa : first
// bbb : 2nd
// yyy : 3rd
// zzz : last
于 2013-08-18T10:57:36.943 回答
47

如果您想要List对地图的键进行排序:

var sortedKeys = map.keys.toList()..sort();

您可以选择将自定义排序函数传递给该List.sort方法。

最后,我可以建议使用Map<String, dynamic>而不是Map<String, Object>吗?

于 2013-08-15T01:24:51.517 回答
5

我知道我的回答为时已晚,但请查看我发现的内容.. 可能会对某人有所帮助

这个sortedmap包有助于以排序的方式维护对象的 Map。

于 2020-07-09T17:13:29.427 回答
-1
final sorted = SplayTreeMap<String,dynamic>.from(map, (a, b) => a.compareTo(b));

如所见

如何在 dart/Flutter 中的 Firebase 快照字典上使用 SplayTreeMap?

于 2021-11-09T17:06:02.220 回答