[Dart语法]第三章:数据类型-字典类型

字典Map

声明变量

//声明时直接赋值
Map age = {'john': 16, 'lody': 20, 'susan': 18};
//先声明再赋值,new在dart中可以省略
Map p = new Map();
p["name"] = "李四";
p["age"] = 22;
p["work"] = "面包师";

print(age);		//{john: 16, lody: 20, susan: 18}
print(p);		//{name: 李四, age: 22, work: 面包师}

属性

Map map = {'name': 'tobu', 'age': 25, 'sex': 'male', 'favorite': 'code'};
//长度
print(map.length); //4

//keys键
print(map.keys); //(name, age, sex, favorite)

//values值
print(map.values); //(tobu, 25, male, code)

//是否不为空
print(map.isNotEmpty); //true

//是否为空
print(map.isEmpty); //false

//数据条目
print(map.entries); //(MapEntry(name: tobu), MapEntry(age: 25), MapEntry(sex: male), MapEntry(favorite: code))

方法

Map map = {'name': 'tobu', 'sex': 'male', 'favorite': 'code'};
//addAll在尾部插入多个新键值对
map.addAll({'age': 25});
print(map);//{name: tobu, sex: male, favorite: code, age: 25}

//addEntries 利用entries属性插入元素
Map map = {'name': 'tobu', 'sex': 'male', 'favorite': 'code'};
Map map2 = {'age': 25, 'sports': 'football'};
map.addEntries(map2.entries);
print(map);

//如果键存在返回键的值,否则返回设置的值
Map map = {'name': 'tobu', 'sex': 'male', 'favorite': 'code'};
map.putIfAbsent('name', () => 'carlos');//tobu
print(map);//{name: tobu, sex: male, favorite: code}
map.putIfAbsent('secName', () => 'carlos');//carlos
print(map);//{name: tobu, sex: male, favorite: code, secName: carlos}

字典删除
Map map = {'name': 'tobu', 'sex': 'male', 'favorite': 'code'};
//remove删除指定值
map.remove('name');
print(map);//{sex: male, favorite: code}

//removeWhere删除满足条件的元素
map.removeWhere((key, value) => value == 'male');
print(map);//{name: tobu, favorite: code}

//清空字典
map.clear();
print(map);//{}
字典更新
//update按键名更新
Map map = {'name': 'tobu', 'sex': 'male', 'favorite': 'code'};
map.update('name', (value) => 'carlos');
print(map);//{name: carlos, sex: male, favorite: code}

//updateAll按条件更新
Map map2 = {1: 100, 2: 300, 3: 400};
map2.updateAll((key, value) => key < 2 ? value = 'new' : value);
print(map2);//{1: new, 2: 300, 3: 400}
字典查询
Map map = {'name': 'tobu', 'sex': 'male', 'favorite': 'code'};
//按键名查询值
print(map['name']);

//containsKey key是否存在
print(map.containsKey('sex'));//true

//containsValue value是否存在
print(map.containsValue('tobu'));//true
字典遍历
//forEach
Map map = {'name': 'tobu', 'sex': 'male', 'favorite': 'code'};
map.forEach((key, value) {
    print('$key:$value');
});
/*
name:tobu
sex:male
favorite:code
*/
字典数据类型转换
//toString
Map map = {'name': 'tobu', 'sex': 'male', 'favorite': 'code'};
print(map.toString());//{name: tobu, sex: male, favorite: code}
posted @   漫游者杰特  阅读(194)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示