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"]); |
评论