网站首页 > 技术文章 正文
题记
—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天。
Flutter完全采用了Dart语言,所以分析Dart语言基础相当于是学习了Flutter语言基础、在Dart中,Map用来存储对像类型的数据,List与Set用来存储数组类型的数据。
本文是来描述 Map 、List 、Set中数据的添加 、修改、循环遍历查询的。
1 Dart中的Map
Map用来保存key-value键值对的数据集合, 与Object-C中所说的字典一至,分为无序的HashMap、key的插入顺序的LinkedHashMap、按key的排序顺序的SplayTreeMap,Map的创建实例如下:
// 创建一个Map实例,默认实现是LinkedHashMap。
Map()
// 创建一个LinkedHashMap实例,包含other中的所有键值对。
Map.from(Map other)
// 创建一个Map实例,其中Key和Value由iterable的元素计算得到。
Map.fromIterable(Iterable iterable, {K key(element), V value(element)})
// 将指定的keys和values关联,创建一个Map实例。
Map.fromIterables(Iterable<K> keys, Iterable<V> values)
// 使用默认实现LinkedHashMap创建一个严格的Map。
Map.identity()
// 创建一个不可修改、基于哈希值的Map,包含other所有的项
Map.unmodifiable(Map other)
然后在实际项目中结合数据创建Map实例,创建一个空的Map代码如下:
// 创建一个Map实例, 插入顺序进行排列 默认无数据
var dic = new Map();
print(dic); // {}
// 创建一个空的Map, Map允许null作为key
var dic5 = new Map.identity();
print(dic5); //{}
创建有一个有初始值的Map,代码如下:
// 根据一个Map创建一个新的Map, 插入顺序进行排列
var dic1 = new Map.from({'name': '张三'});
print(dic1); // {name: 张三}
// 根据List创建Map, 插入顺序进行排列
List<int> list = [1, 2, 3];
// 使用默认方式, key和value都是数组对应的元素
var dic2 = new Map.fromIterable(list);
print(dic2); // {1: 1, 2: 2, 3: 3}
// 设置key和value的值
var dic3 = new Map.fromIterable(list, key: (item) => item.toString(), value: (item) => item * item);
print(dic3); // {1: 1, 2: 4, 3: 9}
// 创建一个不可修改、基于哈希值的Map
var dic6 = new Map.unmodifiable({'name': 张三});
print(dic6); // {name: 张三}
根据List数据来创建Map,代码如下:
// 两个数组映射一个字典, 插入顺序进行排列
List<String> keys = ['name', 'age'];
var values = [张三, 20];
// 如果有相同的key值, 后面的值会覆盖前面的值
var dic4 = new Map.fromIterables(keys, values);
print(dic4); // {name: 张三, age: 20}
对于Map来讲,初始化创建时可以赋值也可以是空的,当创建的可变的Map数据集合时,在实际开发中往往会根据不同的操作来修改不同的数据,如下:
// 根据一个Map创建一个新的Map, 插入顺序进行排列
// 在这里通过泛型指定 了 Map中的key的类型为 String类型 value是动态的
Map<String, dynamic> dic1 = new Map.from({'name': '张三'});
print(dic1); // {name: 张三}
//修改name的值
dic1['name'] = '李四';
//向Map中添加新的键值对数据
dic1['age'] = 23;
然后获取Map中的数据如下操作;
//根据key获取对应的值
String name = dic1= dic1['name'];
///遍历获取Map中所有的数据
dic1.forEach((key, value) {
print("${key} is ${value}");
});
2 Dart中的List
对于List与Set来讲,都是用来存储数组类型数据,区别是Set不可保存重复数据,也就是说Set中的数据具有唯一性,在这里只分析List,Set与List的使用方法一至,使用代码如下:
// 创建非固定长度的Lsit
var testList = List();
// 也可以 List testList = List();
print(testList.length); // 0
// 创建固定长度的List
var fixedList = List(4);
print(testList.length); // 4
///向Lsit中添加数据
testList.add("hello");
testList.add(123);
// 创建元素类型固定的List
var typeList = List<String>(); // 只能添加字符串类型的元素
typeList.add("张三"); // 正确
typeList.add(1); // 错误。类型不正确
// 直接赋值 创建List
var numList = [1, 2, 3];
然后获取List中的数据需要通过索引来获取,List中保存的数据索引从0开始计数,代码如下:
///方式一 遍历获取List中的所有数据
testList.forEach((value) {
//value 就是List中对应的值
});
///方式二 遍历获取List中的所有的数据
for(int i=0;i<testList.length;i++){
///根据索引获取List中的数据
var value = testList[i];
}
//方式三
//while+iterator迭代器遍历,类似Java中的iteator
while(testList.iterator.moveNext()) {
//获取对应的值
var value = testList.iterator.current;
}
//方式四 增强for循环
//for-in遍历
for (var value in testList) {
//value 就是List中对应的值
}
完毕
猜你喜欢
- 2024-10-18 【Python】map函数的常见用法,你知道多少?
- 2024-10-18 Python 中的数据可视化:将列表转换为图形
- 2024-10-18 Java 把一个 List 转换为字符串(java list转成字符串)
- 2024-10-18 Java Stream API:将线性集合添加到Map,键为对象属性
- 2024-10-18 SpringBoot读取配置文件中的数据到map和list
- 2024-10-18 「Java」咦,它就是Map和List的儿子吧
- 2024-10-18 一日一技:举例说明python中的map()方法
- 2024-10-18 详解 Python Map 函数(python map函数的用法)
- 2024-10-18 你应该知道的Java Map 的七个常见问题!
- 2024-10-18 Java核心数据结构(List、Map、Set)原理与使用技巧
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)