List Set Map详解
List中常用的属性和方法
常用属性:
- length 长度
- reversed 翻转 (注意这是个属性,属性值为字符串)
- isEmpty 是否为空
- isNotEmpty 是否为不空
常用方法:
- List.filled(num,value) (静态方法, 用num个value创建一个新的List)
- add 增加一个数组元素
- addAll(List) 拼接数组
- indexOf 查找,查找到就返回index,没有返回-1
- remove 删除传入具体值
- removeAt 删除传入索引值
- fillRange(start, end, value) 用value替换指定范围的元素(包括起始索引,不包括终止索引), 返回值为void
- insert(index,value) 指定元素之后插入
- insertAll(index,List) 指定元素之后插入List
- toList() 其他类型转化成List
- join(separator) List转换成字符串, 每个元素间用separator来分隔
- split(separator) 字符串转化成List, 默认每个元素间用separator来分隔
- forEach 遍历
- map
- where
- any
- every
难点详解
map()
map方法接受一个匿名函数作为参数,每次迭代时将value作为参数执行匿名方法,并将返回值放入新的可迭代对象中,最后返回一个这个可迭代对象
在list的map对象中,传入参数value默认为元素的值
List myList = [1,3,4];
var newList=myList.map((value){
return value*2;
});
where()
类似于map方法,但返回的为所有满足条件的值
List myList = [1,3,4,5,7,9];
var newList=myList.where((value){
return value>4;
});
突发奇想
如果将where的示例的代码中的where替换为map会发生什么呢?
List myList = [1,3,4,5,7,9];
var newList=myList.map((value){
return value>4;
});
print(newList);
我们得到的返回值为:
(false, false, false, true, true, true)
得出结论:map的返回值为每个匿名方法return值的集合
where返回值为匿名方法return值为true的元素的集合
any()
检测集合中是否有满足条件的元素,如果有就返回true
List myList = [1,3,4,5,7,9];
var flag=myList.any((value){
return value>7;
});
every()
检测是否集合中每个元素都满足条件,如果都满足则返回true
代码略
Set
-
用它最主要的功能就是去除数组重复内容
-
Set是没有书序且不能重复的集合,不能通过索引去获取值
利用set去重
List myList=["1","2","3","1","2","3"];
var set = new Set();
set.addAll(myList);
打印set中的所有元素
var s = new Set();
s.addAll([1,2,3]);
s.forEach((element)=>print(element));
Map映射 无序的键值对
初始化map的两种方式
var person={
"name":"bob",
"age":20
};
var m = new Map();
m["name"]="jenny";
m["age"]=21
常用属性:
- keys 获取所有的key值, 常后接一个toList方法
- values 获取所有的value值
- isEmpty 是否为空
- isNotEmpty 是否不为空
常用方法:
- remove(key) 删除指定k-v
- addAll({…}) 合并映射,将参数的数据加入到map中
- containsValue 查看映射内的值,返回true/false
- forEach
- map
- where
- any
- every
循环打印map中的键值对
var person={
"name":"bob",
"age":20,
"sex":"male"
};
person.forEach((key, value) {
print("$key: $value");
});
补充:循环进阶
增强for循环
for(var item in list){
print(item);
}
.forEach
list.forEach((value) {
print("$value");
});
更多详细内容可参考api文档(英文)
https://api.dart.cn/stable/2.14.2/dart-core/List-class.html