我有以下地图
Map testMap = {
3 : {
'order': 3,
'sample' : 'sample'
},
2 : {
'order': 2,
'sample' : 'sample'
},
1 : {
'order': 1,
'sample' : 'sample'
},
4: {
'order': 4,
'sample' : 'sample'
}
};
Run Code Online (Sandbox Code Playgroud)
如果不可能通过子映射内的“顺序”值,我如何按键对其进行排序。
注意:地图最多可容纳 100 个字段。
解决了
我之前一定很累了,但以防万一其他人正在看这里是我的解决方案。另外,仅通过按键排序会SplayTreeMap产生奇怪的顺序,例如 1,10,11,12,13,14,15,16,17,18,19,2,20,21 ...
import 'dart:collection';
void main() {
Map testMap = {
11: {
'order': '11',
'sample' : 'sample'
},
3 : {
'order': '3',
'sample' : 'sample'
},
2 : {
'order': '2',
'sample' : 'sample'
},
1 : {
'order': '1',
'sample' : 'sample'
},
4: {
'order': '4',
'sample' : 'sample'
},
31: {
'order': '31',
'sample' : 'sample'
},
21: {
'order': '21',
'sample' : 'sample'
}
};
final sorted = new SplayTreeMap.from(testMap, (a, b) => int.parse(testMap[a]['order']).compareTo(int.parse(testMap[b]['order'])));
print(sorted);
}
Run Code Online (Sandbox Code Playgroud)
这是在 dart 中按键对映射进行排序的最简单方法。
var map = {
"a": 1,
"c": 3,
"b": 2,
};
void main() {
final sorted = Map.fromEntries(map.entries.toList()..sort((e1, e2) => e1.key.compareTo(e2.key)));
print(sorted);
}
Run Code Online (Sandbox Code Playgroud)
根据 Map 的值对 Map 进行排序的示例代码
import 'dart:collection';
var map = {
"a": 2,
"b": 1,
"c": -1,
};
void main() {
final sorted = new SplayTreeMap<String,dynamic>.from(map, (a, b) => map[a] > map[b] ? 1 : -1 );
print(sorted);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9681 次 |
| 最近记录: |