我在Dart中对Map的键进行排序时遇到了问题。
Map<String, Object> map = new Map();
如何在地图中对键进行排序?或者对Iterable map.keys进行排序。
答案 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);
希望这有帮助。