有個需求需要對map里面的數(shù)據(jù)按照key的首字母排序月匣。
網(wǎng)上搜到的解決辦法:
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。
還需要進(jìn)行一步操作才能實(shí)現(xiàn)我們的需求:
//new一個map按照keys的順序?qū)⒃鹊膍ap數(shù)據(jù)取出來就可以了仔燕。
var treeMap = Map();
keys.forEach((element) {
treeMap[element] = map[element];
});