持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情
今日目标
今天一起来学习Dart的集合类型List,Set,Map以及补充一下昨日循环语句forEach map where any every
List
在前几天我们有学习到如何去定义一个list变量,有不清楚的小伙伴可以回顾一下
今天来详细了解下lsit的一些常用属性和方法
list常用属性
属性 | 释义 |
---|---|
length | 长度 |
reversed | 翻转 |
isEmpty | 是否为空 |
isNotEmpty | 是否不为空 |
length,isEmpty在之前都有讲到过使用,reversed是翻转数组
List list = [1,2,3,4];
print(list.reversed);
可以看到得到了一个反向输出顺序的list
如果我们想获得翻转后的数组,可以直接 var list2 = list.reversed; 这样操作么?
是不可以的,还需要将reversed后的数据调用toList()才可以
List list = [1,2,3,4];
var list2 = list.reversed.toList();
print(list2);
list常用方法
方法名 | 释义 |
---|---|
add | 增加 |
addAll | 拼接数组 |
indexOf | 查找传入数据的索引 |
remove | 删除对应传入的数据 |
removeAt | 删除对应传入索引的值 |
fillRange | 修改 |
insert(index, value) | 在指定位置插入数据 |
insertAll(index, list) | 在指定位置插入list |
tolist | 将它类型转换为List |
join | 将List转换为字符串 |
split | 将字符串转换为List |
forEach | 循环 |
map | 循环 |
add&addAll
// add
List list = [1];
list.add(2);
print('use add $list');
// addAll
list.addAll([3,4,5]);
print('use addAll $list');
add一次只可像尾部添加一个值,如果想要一次添加多个就需要使用addAll方法并且addAll的传参也是一个List类型的数据。add相当于js里array的push,addAll相当于concat。
indexOf
indexOf和js里indexOf一样都是查找是否包含传入值,如果包含则会返回对应的索引下标,查不到返回-1
List list = [5,4,3,2,1];
print(list.indexOf(5));
print(list.indexOf(10));
remove&removeAt
List list = [1,2,3,4,5];
print(list.remove(2));
print(list);
list.removeAt(1);
print(list);
remove&removeAt返回值是true或者false删除成功就返回true,否则返回false
removeAt传入的索引值不能超出list的长度否则会报错
fillRange
List list = [1,2,3,4];
list.fillRange(1,3,10);
print(list);
fillRange(开始需要修改的索引位置,修改结束的索引位置) 要注意结束位置的索引值不会被修改
insert&insertAll
List list = [1,2,3,4];
list.insert(1,'你太有才了');
print(list);
insert会在你指定索引的下标处插入你要添加的值
List list = [1,2,3,4];
list.insertAll(1, ['你', '太', '有', '才', '了']);
print(list);
insetAll在指定索引小标处一次可插入多个值
join&split
这里的join和split的用法就和js是一样的,传入的参数表示合并或分割符号
List list = [1,2,3];
String str = list.join('掘金');
print(str);
list = str.split('掘金');
print(list);
Set
可以通过set来实现一些对集合去重的操作
List list = [1,2,3,4,1,2,3,4,1,2,3,4];
var s = new Set();
s.addAll(list);
print(s);
Maps
映射Maps是无序的键值对
常用属性有:
属性 | 释义 |
---|---|
keys | 获取所有的key值 |
values | 获取所有的value值 |
isEmpty | 判断是否为空 |
isNotEmpty | 判断是否不为空 |
常用的方法:
方法 | 释义 |
---|---|
remove(key) | 删除指定的key |
addAll({...}) | 合并映射 |
containsValue | 查看映射内的值 返回true或者false |
forEach | |
map | |
where | |
any | |
every |
Maps有点类似js里的obj对象,定义Maps的时候也可以指定类型和listx相似
Map me = {
'name': '你太有才了',
'level': 1,
'isWebFont': true
};
print(me.keys.toList());
print(me.values.toList());
Tips注意在定义maps映射时,key值应为一个字符串需要单双引号包裹才可以,这点和js有些区别
增加&删除和list相似,这里就不再演示了\
对应list,set,maps一些通常方法介绍
forEach
List list = ['太','有','才', '了'];
list.forEach((value){
print(value);
});
where
类似js的filter
List list = [1,2,3,4,5];
var temp = list.where((value){
return value > 3
});
print(temp.toList());
any every
判断是否有指定的传入的条件,返回true或者false
List list = [1,2,3,4];
var temp = list.any((value){
return value > 2;
});
print(temp);
any只要有一个满足条件就可以,every是都要满足条件才可以返回true
Ending
持续学习,加油,如有不对的地方还请指正,谢谢~~