定义
1 | var list1 = List();// 不限定长度,不限定类型,可添加任意类型的数据 |
常用属性
1 | List |
常用方法
add() 添加一个元素到List末尾
addAll() 两个List合并
1
2
3
4
5
6
7
8List
list10 = List();
list10.add('aaa');
list10.add('bbb');
Listlist11 = List();
list11.add('ccc');
list11.add('ddd');
list11.addAll(list10);
print(list11);//[ccc, ddd, aaa, bbb]插入
insert(index,element) 在指定index处插入某个值
1
2
3
4
5
6
7
8List
list12 = List();
list12.add(0);
list12.add(1);
list12.add(2);
list12.add(3);
print(list12);//[0, 1, 2, 3]
list12.insert(1, 5); //指定索引位置 插入值,其余顺延
print(list12);// [0, 5, 1, 2, 3]insertAll(index,list) 在指定index处插入list
删除
- remove(obj) 删除具体的元素
- removeAt(index) 删除索引位置元素
- removeLast()删除末尾元素
- removeRange(start,end) 范围删除
- removeWhere() 根据条件删除
clear() 清空数组
setRange(startIndex,endIndex,list) 范围修改List的值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15List
list13 = List();
list13.add('aaa');
list13.add('bbb');
list13.add('ccc');
list13.add('ddd');
// print(list13);// [aaa, bbb, ccc, ddd]
Listlist14 = List();
list14.add("111");
list14.add("222");
list14.add("333");
list14.add("444");
list14.add("555");
list14.add("666");
list13.setRange(0,3, list14);//范围修改,从list14取出0 1 2位置的值,修改list13对应0 1 2位置的值,0-3含头不含尾,start和end相同,则不变。start和end任何一个超出list13 list14的角标 则报错。
//print(list13);//[111, 222, ccc, ddd]replaceRange(start,end,list)范围替换 含头不含尾
1
2
3
4
5
6
7
8List
list20 = List();
list20.add(0);
list20.add(1);
list20.add(2);
list20.add(3);
print(list20);//[0, 1, 2, 3]
list20.replaceRange(1, 3, [5,6,7,8]);//范围替换 含头不含尾
print(list27);//[0, 5, 6, 7, 8, 3]retainWhere(()=>(bool)) 根据条件筛选元素
1
2
3
4
5
6
7
8List
list20 = List();
list20.add(0);
list20.add(1);
list20.add(2);
list20.add(3);
print(list20);//[0, 1, 2, 3]
list20.retainWhere((element)=>(element>2)); //根据条件保留住元素
//print(list20);//[3, 4]firstWhere((element)=>(bool)) 返回第一个满足条件的元素(不是元素的index)
1
2
3
4
5
6
7List
list21 = [1, 2, 3, 4, 5];
int result = list21.firstWhere((element)=>(element>2));//返回满足条件的第一个元素
//int result1 = list21.firstWhere((element)=>(element>44));//返回满足条件的第一个元素,不满足 报错
int result2 = list21.firstWhere((element)=>(element>44),orElse: ()=>(10));//返回满足条件的第一个元素,不满足 返回orElse方法的返回值
//print(result7);//3
//print(result8);//报错
//print(result9);//10forEach() List遍历每个元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14List
list22 = [3, 4, 1, 2, 5];
list22.forEach((element){
//遍历每个元素 此时不可add或remove 否则报错 但可以修改元素值,
element += 1;
//print(element);//依次输出:4 5 2 3 6
list22[3]=0;//直接修改list对应index的值
list22[0]=0;
});
//print(list22);// [0, 4, 1, 0, 5]
//for List遍历每个元素
for(var x in list22){
print(x);//0 4 1 0 5
}map() 遍历现有List的每个元素,并做处理,返回一个新的Iterable
1
2
3
4
5List
list23 = [3, 4, 1, 2, 5];
Iterableresult1 = list23.map((e)=>(e>2?"a":"b"));//用指定方法对每个元素做操作,将结果组成一个新的Iterable
//print(result1);//(a, a, b, b, a)
Iterableresult2 = list23.map((e)=>(e>2));
//print(result2);//(true, true, false, false, true)reduce((a,b)=>(某种操作)) 用指定的方法对元素做连续操作,将结果返回
1
2
3
4
5List
list24 = [3, 4, 1, 2, 5];
int result1 = list24.reduce((a,b)=>(a+b));//3+4+1+2+5 用指定的方法对元素做连续操作,将结果返回
//print(result1);//15
int result2 = list24.reduce((a,b)=>(a*b));//3*4*1*2*5 用指定的方法对元素做连续操作,将结果返回
//print(result2);//120toSet() 将List转为Set 去除后面重复的元素
1
2
3List
list25 = [3, 4, 1, 2, 5,2,3,6];
Setresult1 = list25.toSet();//将list转为set,将后面重复的都去掉
//print(result1);//{3, 4, 1, 2, 5, 6}asMap() 将list转为map
1
2
3
4
5
6
7
8
9List
list26 = List();
list26.add("aaa");
list26.add("bbb");
list26.add("ccc");
list26.add("ddd");
list26.add("eee");
//print(list26);// [aaa, bbb, ccc, ddd, eee]
Mapmap = list26.asMap();//list转为map key为index value为list的值
//print(map);//{0: aaa, 1: bbb, 2: ccc, 3: ddd, 4: eee}join(“-“) 用指定的字符将List中每个元素都连接起来,返回一个字符串
1
2
3List
list27 = [3, 4, 1, 2, 5];
String result1 = list27.join("-");//用指定的字符将每个元素都连接起来,返回一个字符串
//print(result1);//3-4-1-2-5