print(map2); //{a: a1, b: b1}
map2[‘c’] = ‘c1’;
print(map2); //{a: a1, b: b1, c: c1}
var map3 = new Map();
map3[‘a’] = ‘a3’;
map3[2] = ‘b3’;
print(map3); //{a: a3, 2: b3}
print(map3[3]); //null 如果不存在,则为null
map3[3] = null; //key存在 value存在 value的值为null
print(map3); //{a: a3, 2: b3, 3: null}
指定泛型
var map4 = <String, String>{};
Map<int, String> map5 = new Map(); //new也可以省略
map5[1] = ‘a5’;
map5[2] = ‘b5’;
print(map5); //{1: a5, 2: b5}
Map<String, int> map6 = {‘a6’: 1, ‘b6’: 2};
print(map6); //{a6: 1, b6: 2}
Map<String, int> map7 = Map();
map7[‘a7’] = 1;
map7[‘b7’] = 2;
map7[‘c7’] = 3;
print(map7.length); //3 长度
print(map7.isNotEmpty); //true 是否不为空
print(map7.isEmpty); //flase 是否为空
print(
‘ m a p 7. k e y s , {map7.keys}, map7.keys,{map7.keys.runtimeType}’); // (a7, b7, c7),_CompactIterable Map的所有key
print(
‘ m a p 7. v a l u e s , {map7.values}, map7.values,{map7.values.runtimeType}’); //(1, 2, 3),_CompactIterable Map的所有value
print(
‘ m a p 7. e n t r i e s , {map7.entries}, map7.entries,{map7.entries.runtimeType}’); // (MapEntry(a7: 1), MapEntry(b7: 2), MapEntry(c7: 3)),MappedIterable<String, MapEntry<String, int> Map的所有键值对
- 新增一个键值对
Map<String, int> map8 = Map();
map8[‘a8’] = 1;
print(map8); //{a8: 1}
- 修改一个键值对
Map<String, int> map9 = {‘a9’: 1, ‘b9’: 2};
map9[‘a9’] = 9;
print(map9); //{a9: 9, b9: 2}
- update(K key, V update(V value), {V ifAbsent()}) 根据指定的Key对应的value做出修改,同时Map本身也会被修改
Map<String, int> map10 = {‘a10’: 1, ‘b10’: 2, ‘c10’: 3};
var resultMap10 = map10.update(‘b10’, (value) => value * 2);
print(resultMap10); //4
print(map10); //{a10: 1, b10: 4, c10: 3}
var resultMap101 = map10.update(‘c’, (value) => (value * 2),
ifAbsent: () => (10)); //如果key不存在,但是有ifAbsent参数,返回idAbsent函数的值,并添加到map中
print(‘ r e s u l t M a p 101 , resultMap101, resultMap101,{resultMap101.runtimeType}’); //10,int
print(map10); //{a10: 1, b10: 4, c10: 3, c: 10}
- updateAll(V update(K key, V value)) 根据参数内的函数,修改map
Map<String, int> map11 = {‘a11’: 2, ‘b11’: 3, ‘c11’: 4};
var resultMap11 = map11.updateAll((key, value) {
return value * 2;
});
print(map11); //{a11: 4, b11: 6, c11: 8}
map11.updateAll((key, value) {
if (key == ‘a11’) {
return value * 2;
}
if (key == ‘c11’) {
return value + 1;
}
return 7; //如果没有这行,b11对应的value为null 这里可以看出updateall会影响所有的键值对
});
print(map11); //{a11: 8, b11: 7, c11: 9}
- remove() 删除一个key
Map<String, int> map12 = {‘a12’: 2, “b12”: 1};
map12.remove(‘a12’);
print(map12); //{b12: 1}
map12.remove(‘c12’); //删除一个不存在的key,毫无影响,无报错无警告
print(map12); //{b12: 1}
- removeWhere(bool predicate(K key, V value)) 根据函数条件批量删除key
Map<String, int> map13 = {‘a13’: 3, ‘b13’: 4, ‘c13’: 1};
map13.removeWhere((key, value) => value > 3);
print(map13); //{a13: 3, c13: 1}
- containsKey() 是否包含某个key contrainsValue()是否包含某个value
Map<String ,int> map14 = {‘a14’:1};
bool resultMap14 = map14.containsKey(‘a11’); //false
bool resultMap141 = map14.containsValue(1); //true
- forEach(void f(K key, V value)) 遍历Map ,遍历时不可add或者remove
Map<String, int> map15 = {‘a15’: 1, ‘b15’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5};
map15.forEach((key, value) {
print(‘ k e y , key, key,value’);
/*
a15,1
b15,2
c,3
d,4
e,5
*/
});
map15.forEach((key, value) {
// if(key == ‘a15’){value = 8;}
map15[‘a15’] = 8;
});
print(map15); //{a15: 8, b15: 2, c: 3, d: 4, e: 5}
题外话
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等学习资料。
【Android思维脑图(技能树)】
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展~
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等学习资料。
【Android思维脑图(技能树)】
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
[外链图片转存中…(img-7GTgSaDT-1714698621534)]
希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展~
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!