List 是 Dart 中非常重要的数据结构之一。它允许我们存储一系列有序的元素,并提供了许多实用的方法来操作这些元素。本章将详细介绍 Dart List 的一些常用方法和属性。
创建 List
创建 List 有多种方式:
// javascriptcn.com 代码示例 // 创建一个空的 List List<String> emptyList = []; // 使用 List.filled 创建一个指定大小且初始值相同的 List List<int> filledList = List.filled(5, 0); // 使用 List.generate 创建一个指定大小的 List,其中每个元素是通过提供的函数生成的 List<String> generatedList = List.generate(5, (index) => 'Item $index'); // 使用 List.from 创建一个包含特定对象的 List List<int> fromList = List.from([1, 2, 3, 4]);
添加元素
List 提供了多种方法来添加元素:
// javascriptcn.com 代码示例 // 向 List 尾部添加一个元素 List<String> list = ['a', 'b']; list.add('c'); // ['a', 'b', 'c'] // 向 List 尾部添加多个元素 list.addAll(['d', 'e']); // ['a', 'b', 'c', 'd', 'e'] // 在指定位置插入一个元素 list.insert(1, 'x'); // ['a', 'x', 'b', 'c', 'd', 'e']
访问和修改元素
可以通过索引来访问或修改 List 中的元素:
List<int> numbers = [1, 2, 3, 4]; // 访问元素 print(numbers[0]); // 输出 1 // 修改元素 numbers[0] = 10; print(numbers); // 输出 [10, 2, 3, 4]
删除元素
删除 List 中的元素可以通过以下几种方式实现:
// javascriptcn.com 代码示例 List<String> fruits = ['apple', 'banana', 'cherry']; // 删除指定索引的元素 fruits.removeAt(1); // ['apple', 'cherry'] // 删除指定值的第一个匹配项 fruits.remove('apple'); // ['cherry'] // 删除所有匹配的值 fruits.retainWhere((fruit) => fruit != 'cherry'); // [] // 清空 List fruits.clear(); // []
查找元素
List 提供了一些方法来查找元素:
// javascriptcn.com 代码示例 List<int> numbers = [1, 2, 3, 4, 5]; // 检查 List 是否包含某个值 bool containsTwo = numbers.contains(2); // true // 获取第一个匹配项的索引 int index = numbers.indexOf(3); // 2 // 获取最后一个匹配项的索引 int lastIndex = numbers.lastIndexOf(2); // -1,因为从后向前查找 // 使用 where 方法获取符合条件的所有元素 Iterable<int> evenNumbers = numbers.where((number) => number % 2 == 0); print(evenNumbers.toList()); // [2, 4]
遍历 List
遍历 List 是非常常见的操作,Dart 提供了多种方法来实现这一点:
// javascriptcn.com 代码示例 List<String> fruits = ['apple', 'banana', 'cherry']; // 使用 for 循环 for (String fruit in fruits) { print(fruit); } // 使用 forEach 方法 fruits.forEach((fruit) { print(fruit); }); // 使用 map 方法生成一个新的 List List<String> capitalizedFruits = fruits.map((fruit) => fruit.toUpperCase()).toList(); print(capitalizedFruits); // ['APPLE', 'BANANA', 'CHERRY']
List 的长度和容量
List 的长度可以通过 length
属性获取,而容量可以通过 capacity
属性获取:
List<int> numbers = [1, 2, 3]; // 获取 List 的长度 int length = numbers.length; // 3 // 获取 List 的容量(仅对可变 List 有效) int capacity = numbers.capacity; // 对于固定大小的 List,此值可能为 null 或不可用
其他常用方法
除了上述介绍的方法之外,List 还提供了一些其他常用的方法:
// javascriptcn.com 代码示例 List<int> numbers = [1, 2, 3, 4, 5]; // 对 List 中的元素进行排序 numbers.sort(); // [1, 2, 3, 4, 5] // 打乱 List 中的元素顺序 numbers.shuffle(); // 可能会输出 [3, 1, 4, 5, 2] // 截取 List 的一部分 List<int> subList = numbers.sublist(1, 3); // [2, 3] // 检查 List 是否为空 bool isEmpty = numbers.isEmpty; // false bool isNotEmpty = numbers.isNotEmpty; // true // 填充 List 的所有元素 numbers.fillRange(0, 2, 0); // [0, 0, 3, 4, 5] // 复制 List 的一部分到另一个 List List<int> copy = List<int>.from(numbers);
以上是 Dart List 常用方法和属性的详细说明。通过这些方法和属性,我们可以方便地对 List 进行各种操作,从而更高效地处理数据。