flutter - dart基础之map

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常见属性


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常见方法


  • 新增一个键值对

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学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值