Dart List
Lawrence 2023/6/1
# Dart 数据类型 - List
Dart 中的数组,由 List对象 表示。List 有两种声明方式
- 字面量方式
List list = [];
不限定元素的数据类型List list = <int>[];
限定元素的数据类型是 int
- 构造函数方式
List list = new List.empty(growable: true);
不限制长度的空列表List list = new List.filled(3, 0);
声明指定长度的填充列表
扩展操作符(...)
var list = [1, 2, 3];
var list2 = [0, ...list] // [0, 1, 2, 3]
void main() {
// 声明List - 字面量
List l1 = ['a', 'b', 'c', 1, 2, 3];
print(l1);
List l2 = <int>[1, 2, 3]; // 限定元素类型的声明方式
print(l2);
// 通过命名构造函数的声明方式
var l3 = new List.empty(growable: true);
l3.add(1);
print(l3);
var l4 = new List.filled(3, 6);
print(l4);
// 扩展操作符
var l5 = [0, ...l4];
print(l5);
var l6;
var l7 = [7, ...?l6];
print(l7);
// 返回列表的长度
print(l1.length);
// 列表的反转
print(l1.reversed.toList());
// 添加元素
l3.addAll([4, 5, 6]);
print(l3);
// 删除元素
l3.remove(6);
print(l3);
// 根据下标删除元素
l3.removeAt(1);
print(l3);
// 在指定的位置添加元素
l3.insert(1, 9);
print(l3);
// 清空
l3.clear();
print(l3.length);
print(l3.isEmpty);
// 合并元素
List words = ['Hello', 'World'];
print(words.join('-'));
}
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
45
46
47
48
49
50
51
52
53
54
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
45
46
47
48
49
50
51
52
53
54
# 遍历 List
- forEach() 遍历列表
- map() 遍历并处理元素,然后生成新的列表
- where() 返回满足条件的元素
- any() 只要有一项满足条件,即返回 true
- every() 判断是否每一项都满足条件,都满足条件才返回 true
void main() {
var nums = [1, 2, 3];
// for 循环进行遍历
for (var i = 0; i < nums.length; i++) {
print(nums[i]);
}
// for ... in
for (var item in nums) {
print(item);
}
// forEach
nums.forEach((element) {
print(element);
});
// var newNums = [];
// for (var i = 0; i < nums.length; i++) {
// newNums.add(nums[i] * nums[i]);
// }
// print(newNums);
// map 循环之后会得到一个处理后的列表
var newNums = nums.map((e) {
return e * e;
});
print(newNums.toList());
// where 返回符合条件的元素
// 判断数字是否是奇数
bool isOdd(n) => n % 2 == 1;
var oddNum = nums.where(isOdd);
print(oddNum.toList());
// any 来检测是否有奇数(至少有一个)
print(nums.any(isOdd));
// every 来判断是否都是奇数
print(nums.every(isOdd));
// 扩展
var pairs = [[1, 2], [3, 4]];
var flattened = pairs.expand((element) => element).toList();
print(flattened); // [1, 2, 3, 4]
// 折叠,对列表中的每一个元素做一个累计操作(对应 js 中的 reduce)
int result = nums.fold(2, (p, element) => p + element);
print(result);
}
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
45
46
47
48
49
50
51
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
45
46
47
48
49
50
51