List常用属性和方法 , Set , Map(字典,映射)的常用方法和属性 , 常用循环遍历方法 , 使用循环语句修改list内容where , any , map , every
List常用属性和方法
常用属性
- length(长度) , reversed(反转) , isEmpty(为空) , isNotEmpty(不为空)
常用方法
- add(增加) , addAll(拼接数组) , indexOf(查找,传入具体值) , remove(删除,传入具体值) , removeAt(删除,传入索引值) , fillRange(修改) , insert(index,value)(指定位置插入) , toList()(其他类型转换为List) , insertAll(index,list)(指定位置插入List) , Join()(List转换为字符串) , split()(字符串转换为List) , forEach , map , where , any , every
例1:常用属性
1
2
3
4
5
6
7List myList=['大','中','小'];
print(myList.length); //输出: 3
print(myList.isEmpty); //输出: false
print(myList.isNotEmpty); //输出: true
print(myList.reversed); //输出: (小,中,大) 经过反转后并不是list类型
var newList=myList.reversed.toList();
print(newList); //输出: [小,中,大] 使用toList转换为list类型例2:常用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45add
List myList=['大','中','小'];
myList.add('特大'); //add方法增加数组内容,但一次只能添加一个
print(myList); //输出: [大, 中, 小, 特大]
addAll
List myList=['大','中','小'];
myList.addAll(['特大','特特大']); //addAll可以看做是数组拼接,吧括号中的数组和原数组进行拼接
print(myList); //输出: [大, 中, 小, 特大,特特大]
indexOf
List myList=['大','中','小'];
var a=myList.indexOf('小'); //传入想要查询的具体内容,如果该数组中有则返回索引值,没有的话返回-1
print(a); //输出: 2 这是小在数组中的索引值
remove
List myList=['大','中','小'];
myList.remove('小'); //传入想要删除的具体内容
print(myList); //小被删除了所以输出: [大,中]
removeAt
List myList=['大','中','小'];
myList.removeAt(2); //传入想要删除的索引值,小的索引值是012里的2
print(myList); //小被删除了所以输出: [大,中]
fillRange
List myList=['大','中','小'];
myList.fillRange(2,3,'超小'); //传入起始位置和结束位置的索引值,然后传入要修改的内容,索引值位置模板[0'大'1'中'2'小'3] (start,end,value)
print(myList); //经过修改 输出: [大, 中, 超小]
myList.fillRange(1,3,'超小'); //也可以一次性修改多项
print(myList); //输出: [大,超小,超小]
insert
List myList=['大','中','小'];
myList.insert(3, '超小'); //填写要插入的位置 和 要插入的内容[0'大'1'中'2'小'3]
print(myList); //输出: [大, 中, 小, 超小] insert只能插入一个内容
insertAll
List myList=['大','中','小'];
myList.insertAll(1, ['特大','特小']); //可插入数组(多个内容)
print(myList); //输出: [大, 特大, 特小, 中, 小]
Join
List myList=['大','中','小'];
var a=myList.join(' '); //Join方法可把数组转换为字符串 ('引号')中传入如何间隔
var b=myList.join('-'); //可以传入空格也可以使用,- 等等
print(a); //输出: 大 中 小
print(b); //输出: 大-中-小
split
var str='苹果-香蕉-桃子'; //字符串 如果是str='苹果,香蕉,桃子'则split传入','
var list=str.split('-'); //用split方法 以-为分隔符来切割内容组成数组
print(list); //输出: [苹果, 香蕉, 桃子]
Set
用它的主要功能就是去除数组重复内容
Set是没有顺序且不能重复的集合,所以不能通过索引去获取值
例: Set的使用方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Set a={'aaa','bbb','aaa'};
print(a); //输出: {aaa, bbb}
var s=new Set();
s.add('张三');
s.add('李四');
s.add('李四');
print(s); //输出: {张三, 李四}
print(s.toList()); //输出: [张三, 李四]
var l=new List();
l.add('张三');
l.add('李四');
l.add('李四');
print(l); //输出: [张三, 李四, 李四]
print(l.toSet()); //输出: {张三, 李四}
print(l.toSet().toList()); //输出: [张三, 李四]
List list=['苹果','香蕉','西瓜','西瓜','香蕉','西瓜'];
var s=new Set();
s.addAll(list); //必须使用addAll,不然会被看做为一个整体数组
print(s); //输出: {苹果, 香蕉, 西瓜}
print(s.toList()); //输出: [苹果, 香蕉, 西瓜]
Map(字典,映射)的常用方法和属性
常用属性
- keys(获取所有key值) , values(获取所有value值) , isEmpty(是否为空) , isNotEmpty(是否不为空)
常用方法
- remove(key) : 删除指定key的数据
- addAll({…}) : 合并映射,给映射内增加属性
- containsValue(value) : 查看映射内的值,返回true/false
- map , forEach , where , any , every
例1:常用属性
1
2
3
4
5
6
7
8
9
10
11Map person={
'name':'老念',
'age':25,
'sex':'男'
};
print(person); //输出: {name: 老念, age: 25, sex: 男}
print(person.keys); //输出: (name, age, sex)
print(person.keys.toList()); //输出: [name, age, sex]
print(person.values.toList()); //输出: [老念, 25, 男]
print(person.isEmpty); //输出: false
print(person.isNotEmpty); //输出: true例2:常用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23remove(key)
Map person={
'name':'老念',
'age':25,
'sex':'男'
};
person.remove('sex');
print(person); //输出: {name: 老念, age: 25}
addAll
Map person={
'name':'老念',
'age':25,
'sex':'男'
};
person.addAll({'work':['送外卖','敲代码'],'height':165});
print(person); //输出: {name: 老念, age: 25, sex: 男, work: [送外卖, 敲代码], height: 165}
containsValue
Map person={
'name':'老念',
'age':25,
'sex':'男'
};
print(person.containsValue('老念')); //输出: true containsKey(key)使用方法相同
常用循环语句循环遍历
使用循环语句循环遍历打印所有内容有许多方法常用如下
- for循环 , for…in , forEach
例1:使用for循环循环遍历
1
2
3
4var list=['张三','李四','王五','老念'];
for(var i=0;i<list.length;i++){
print(list[i]);
} //输出: 张三 李四 王五 老念例2:使用for…in循环遍历
1
2
3
4var list=['张三','李四','王五','老念'];
for(var itme in list){
print(itme);
} //输出: 张三 李四 王五 老念例3:使用forEach循环遍历
1
2
3
4var list=['张三','李四','王五','老念'];
list.forEach((value){ //forEach((key,value){})因为list只有一个内容所以只填写一个
print(value);
}); //输出: 张三 李四 王五 老念使用循环语句修改list内容
map , where , any , every
- map:循环遍历修改数据
- where:条件判断,满足条件的返回为一个新的集合
- any:条件判断有满足条件的则返回true,没有则返回false
- every:条件判断,所有数据都满足条件则返回true,有一个没有满足条件就返回false
例1:使用for循环修改内容,给list每个数据X2并返回一个新的数组
1
2
3
4
5
6var myList=[1,3,4,5];
var newList=new List();
for(var i=0;i<myList.length;i++){
newList.add(myList[i]*2);
}
print(newList); //输出: [2, 6, 8, 10]例2:使用map方法修改内容,给list每个数据X2并返回一个新的数组
1
2
3
4
5
6var myList=[1,3,4,5];
var newList=myList.map((value){ //虽然forEach也可以做到但是据说很可能会出问题所以一般用map方法
return value*2;
});
print(newList); //输出: (2, 6, 8, 10)
print(newList.toList()); //输出: [2, 6, 8, 10]例3:使用where,将满足条件的数据组成一个新的数组
1
2
3
4
5var myList=[1,3,4,5];
var newList=myList.where((value){
return value>3;
});
print(newList.toList()); //输出: [4,5]例4:使用any判断该数组是否有大于3的数据
1
2
3
4
5var myList=[1,3,4,5];
var f=myList.any((value){
return value>3;
});
print(f); //输出: true例5:使用every判断该数组是否所有数据都大于3
1
2
3
4
5var myList=[1,3,4,5];
var f=myList.every((value){
return value>3;
});
print(f); //输出: false