前言
Dart中的list是一种动态数组,用于存储单个或者多个元素,元素类型可多样,大小可动态变化。它常用于存储和管理一组相关数据,如学生名单、购物清单等。list支持动态添加、删除元素,还可遍历所有元素并查找元素位置。
一、基本概念
- 定义:
List是一种动态数组,可以存储任意类型的对象,并且可以根据需要动态增长和缩小。 - 特性:
- 有序性:
List中的元素保持插入顺序。 - 可重复性:允许存储重复的元素。
- 动态性:可以根据需要自动调整大小。
- 有序性:
二、初始化方式
-
动态类型定义:可以创建一个包含不同类型元素的列表。
List<dynamic> list = [1, 2, "3", true, 5.0]; -
明确类型定义:通过泛型指定列表中元素的类型,确保类型安全。
List<int> list = [1, 2, 3, 4, 5]; -
空列表初始化:创建一个空列表,后续可以动态添加元素。
List<String> emptylist = List.empty(growable: true); -
固定长度列表:创建一个具有固定长度的列表,所有元素初始化为相同的值。
List<String> list = List.filled(10, "default");
三、常用操作方法
-
增删改查:
-
添加元素:
add(value):在列表末尾添加一个元素。addAll(iterable):在列表末尾添加多个元素。insert(index, value):在指定索引处插入一个元素。insertAll(index, iterable):在指定索引处插入多个元素。
-
删除元素:
remove(value):删除列表中第一个匹配的元素。(考虑有重复元素)removeAt(index):删除指定索引处的元素。removeLast():删除列表中的最后一个元素。removeWhere(test):删除所有满足条件的元素。clear():清空列表中的所有元素。
-
修改元素:
setAll(index, iterable):将指定索引处的元素替换为新的迭代元素。setRange(start, end, iterable):将指定范围内的元素替换为新的迭代元素。(区间为左开右闭)
-
查找元素:
indexOf(value):返回元素在列表中的第一个索引。(考虑有重复元素)lastIndexOf(value):返回元素在列表中的最后一个索引。(考虑有重复元素)contains(value):检查列表中是否包含指定的元素。
-
排序:
sort([compare]):对列表中的元素进行排序,可以提供一个可选的比较函数。
四、遍历操作
-
for循环遍历
List<int> list = [1,2,3,4,5,]; for(i=0;i<=list.lenght -1 ;i++){ print(list[1]); } -
forEach遍历
List<int> list = [1,2,3,4,5,]; list.forEach((ls){ print(ls); }); -
for-in 遍历
List<int> list = [1,2,3,4,5,]; for(var ls in list){ print(ls); }
-
五、实践注意
- 明确类型定义:在创建列表时,尽量使用泛型明确指定元素的类型,以提高类型安全性和代码可读性。
- 使用字面量创建列表:Dart推荐使用字面量语法来创建列表,简洁且易于理解。
- 避免使用
cast进行类型转换:在需要类型转换时,尽量在创建列表时指定类型,避免使用cast方法进行类型转换,因为cast的性能较低。 - 判断列表是否为空:使用
isEmpty或isNotEmpty方法来判断列表是否为空,而不是通过length == 0来判断,因为length属性可能需要遍历列表来计算。