Dart中提供的集合容器分别是我们常见的List、Map、Set,但它也只有这三种类型的集合,并不像其他语言会细分到ArrayList、LinkedList之类的。
List(列表 & 数组)
在Dart中没有数组的概念,取而代之的是用List来代替数组的功能。
所以在List的构造函数中,有一个构造函数是传入长度来创建对象,该List对象为固定长度的列表,无法改变长度。
1 | var list1 = new List(); |
如上,通过List()创建的列表list1可以动态更改长度,而通过List(int length)创建的列表list2则无法更改长度。
创建一个List也可以通过简略的方式实现:
1 | var list = [1, 2, 3]; |
如上,可以通过现成数据创建List,创建方式为用中括号[]加上数据,数据之间用逗号隔开。
前面也说了,List代替了数组功能,因此它也实现了数组的功能:
1 | var list = [1, 2, 3]; |
如上,可以通过使用数组的形式来调用List中的子项。
最主要的是以上几点,其他的像List的其他构造函数、其他使用方法,在源代码中的list.dart中描述得很详细了,可以对照着使用。
Map
Map的初始化也和其他类相似,当然它也有简略的方式:
1 | var map = { |
如上,可以用大括号{}包住已有数据,其中的数据为一个个的键值对,每个键值对用冒号:分割,冒号前的为key,冒号后的为value。
Map的使用方式也和List相同:
1 | var map = { |
和List不同的是,中括号中的是Map里的key,而List是对应的序号。
Set
Set是无序的,并且内部元素在Set中是唯一的。因此,Set无法像List一样通过序号来访问数据;还有一点,Set没有像List那样的简略的构造方式:
1 | var set1 = new Set(); |
注:
from构造函数以上三个集合容器都有
要访问Set中的任意一个值,则需要通过elementAt()函数:
1 | var set = new Set.from(["A", "B", "C"]); |
评论