Dart - 如何对Map的键进行排序

时间:2013-08-15 00:33:09

标签: dart

我在Dart中对Map的键进行排序时遇到了问题。

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

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

4 个答案:

答案 0 :(得分:14)

在Dart中它被称为SplayTreeMap:     

import "dart:collection";
main() {
  var st = new SplayTreeMap<String, Object>();
  st["yyy"]={"should be":"3rd"};
  st["zzz"]={"should be":"last"};
  st["aaa"]={"should be":"first"};
  st["bbb"]={"should be":"2nd"};
  for (var key in st.keys) {
    print("$key : ${st[key]['should be']}");
  }
}
//Output:
//aaa : first
//bbb : 2nd
//yyy : 3rd
//zzz : last

答案 1 :(得分:12)

如果您想要地图键的有序List

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

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

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

答案 2 :(得分:1)

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

sortedmap软件包有助于以排序的方式维护对象映射。

答案 3 :(得分:-1)

使用TreeMap。这应该可以解决你的问题。

        Map<String, String> unsortMap = new HashMap<String, String>();
        unsortMap.put("2", "B");
        unsortMap.put("1", "A");
        unsortMap.put("4", "D");
        unsortMap.put("3", "B");

        Map<String, String> treeMap = new TreeMap<String, String>(unsortMap);

希望这有帮助。