Flutter:如何将两个Map对象作为键值对添加到另一个Map中?
问题描述
现有两个Dart Map对象:
Map map01 = { 'name': 'Peter', 'age': 30, }; Map map02 = { 'name': 'Mark', 'age': 25, };
需要创建一个新的Map对象map1,将map01和map02作为键,对应关联新的Map值,最终形式如下:
Map map1 = { map01: { 'name': 'Peter', 'age': 50, }, map02: { 'name': 'Mark', 'age': 25, }, };
请问该如何实现?
实现方案
在Dart中,Map的键可以是任意类型的对象(只要该对象能正确生成哈希码并支持相等性判断),直接将map01、map02作为键,赋值对应的目标Map值即可。
代码示例
// 定义原Map对象 Map map01 = { 'name': 'Peter', 'age': 30, }; Map map02 = { 'name': 'Mark', 'age': 25, }; // 创建目标map1并完成赋值 Map map1 = { // 将map01作为键,对应修改age后的新Map map01: {'name': 'Peter', 'age': 50}, // 将map02作为键,对应原内容的Map(若后续不想让原map02的修改影响这里,建议用新Map实例) map02: {'name': 'Mark', 'age': 25}, };
补充说明
- Dart默认的Map实现(如
HashMap)对键的判断基于对象引用:即使两个Map内容完全一致,只要是不同实例,就会被当作不同的键。 - 如果需要基于Map内容判断键的相等性,需要自定义Map的
hashCode和==方法,不过大部分场景下直接用实例作为键就能满足需求。
内容的提问来源于stack exchange,提问作者Kvu
相关产品推荐
相关产品推荐

