磨刀- Dart Map - 图1

声明

  1. Map names = {'name':'weiza','sex':'1'};
  2. print(names);
  3. names['address'] = '北京'; //添加
  4. names['sex'] = '2'; //修改
  5. print(names);
  6. //指定泛型
  7. Map<String, String> citys = new Map();
  8. citys['cityname'] = '北京';
  9. citys['cityid'] = '10001';
  10. print(citys);
  11. citys['1'] = '1';
  12. print(citys);

属性

  1. print(citys.length); //长度
  2. print(citys.isEmpty); //是否为空
  3. print(citys.isNotEmpty); //是否不为空
  4. print(citys.keys);// key的集合
  5. print(citys.values);//value的集合
  6. //(MapEntry(cityname: 北京), MapEntry(cityid: 10001), MapEntry(1: 1))
  7. print(citys.entries);// map迭代的键值对集合

方法

  1. citys.update('1', (value)=>(value+'23')); //存在的值可以直接修改,不存在的值就直接报错
  2. print(citys);
  3. //key不存在,因为用ifAbsent参数, 返回ifAbsent函数的值,并添加到map中
  4. citys.update('2', (value)=>(value+'34'), ifAbsent: ()=>('123'));
  5. print(citys);
  6. //updateAll根据参数函数的规则,批量修改app
  7. Map<String,int> map1 = {'a':1,"b":2,"c":3}; //指定泛型初始化map
  8. map1.updateAll((k,v){
  9. return v*2;
  10. });
  11. print(map1);
  12. map1.updateAll((k,v){
  13. if(k=='a'){return 100;}
  14. if(k=='b'){return 200;}
  15. return v*10;
  16. });
  17. print(map1);
  18. //删除一个key remove
  19. map1.remove('a');
  20. print(map1);
  21. //根据条件批量删除
  22. Map<String,int> map10 = {"a":1,"b":2,"c":3,"d":4,"e":5};
  23. map10.removeWhere((k,v)=>(v>3)); //删掉符号参数函数keyvalue对
  24. print(map10); //{a: 1, b: 2, c: 3}
  25. //是否包含
  26. map10.containsKey('a'); //是否包含key
  27. map10.containsValue(1); //是否包含value

遍历

  1. names.forEach((k,v){ //forEach 遍历
  2. print('遍历 $k , $v');
  3. });
  4. names.map((k,v){ //map方法放回一个新的数组
  5. return MapEntry(v, k);
  6. });
  7. print('map: $names');

清空

  1. //清空map
  2. names.clear();
  3. print('names $names');

添加addall

  1. Map<String,int> map11 = {'a':1,'b':2,'c':3};
  2. Map<String,int> map12 = {'d':3,'e':5,'f':5,'c':10};
  3. //addAll 整体合并另一个map,泛型要一致 key相同时value值后者覆盖前者.前者不存在就添加进来
  4. map11.addAll(map12);
  5. print(map11);
  6. //addEntries 合并两个map,如果key有重复,并合并的map的value覆盖前者
  7. map11.addEntries(map12.entries);
  8. print(map11);
  9. //putlfAbsent() 存在就获取值,不存在则添加到map,然后返回值
  10. int result= map12.putIfAbsent('c', ()=>(100)); //存在
  11. print(result); //10
  12. int result2 = map12.putIfAbsent('t', ()=>1000); //不存在
  13. print(result2);
  14. print(map12); //map中也会跟着添加进去

cast 泛型类型提升为其父祖类

  1. //cast() 泛型类型提升为其父祖类
  2. Map<String,int> map21 = {"a":1,"b":2,"c":3};
  3. Map<Object,Object> map22 = map21.cast();
  4. map22["d"]=33;
  5. // print(map22);//{a: 1, b: 2, c: 3, d: 33}