有个需求需要对map里面的数据按照key的首字母排序。
网上搜到的解决办法:
List<String> keys = map.keys.toList();
// key排序
keys.sort((a, b) {
List<int> al = a.codeUnits;
List<int> bl = b.codeUnits;
for (int i = 0; i < al.length; i++) {
if (bl.length <= i) return 1;
if (al[i] > bl[i]) {
return 1;
} else if (al[i] < bl[i]) return -1;
}
return 0;
});
但是以前代码仅仅是把map中的key按照字母排序生成了一个新的List。
还需要进行一步操作才能实现我们的需求:
//new一个map按照keys的顺序将原先的map数据取出来就可以了。
var treeMap = Map();
keys.forEach((element) {
treeMap[element] = map[element];
});