The ABC of Dart Part 4 - 集合

Dart中提供的集合容器分别是我们常见的ListMapSet,但它也只有这三种类型的集合,并不像其他语言会细分到ArrayListLinkedList之类的。

List(列表 & 数组)

Dart中没有数组的概念,取而代之的是用List来代替数组的功能。

所以在List的构造函数中,有一个构造函数是传入长度来创建对象,该List对象为固定长度的列表,无法改变长度。

1
2
3
4
5
6
var list1 = new List();
list1.length = 3;
list1.length = 5;

var list2 = new List(3);
list2.length = 5;//error

如上,通过List()创建的列表list1可以动态更改长度,而通过List(int length)创建的列表list2则无法更改长度。

创建一个List也可以通过简略的方式实现:

1
var list = [1, 2, 3];

如上,可以通过现成数据创建List,创建方式为用中括号[]加上数据,数据之间用逗号隔开。

前面也说了,List代替了数组功能,因此它也实现了数组的功能:

1
2
3
var list = [1, 2, 3];
print(list[0]);//打印1
list[1] = 4;

如上,可以通过使用数组的形式来调用List中的子项。

最主要的是以上几点,其他的像List的其他构造函数、其他使用方法,在源代码中的list.dart中描述得很详细了,可以对照着使用。

Map

Map的初始化也和其他类相似,当然它也有简略的方式:

1
2
3
4
var map = {
"a": 1,
"b": 2
}

如上,可以用大括号{}包住已有数据,其中的数据为一个个的键值对,每个键值对用冒号:分割,冒号前的为key,冒号后的为value。

Map的使用方式也和List相同:

1
2
3
4
5
6
7
var map = {
"a": 1,
"b": 2
}

print(map["a"]);
map["b"] = 3;

List不同的是,中括号中的是Map里的key,而List是对应的序号。

Set

Set是无序的,并且内部元素在Set中是唯一的。因此,Set无法像List一样通过序号来访问数据;还有一点,Set没有像List那样的简略的构造方式:

1
2
var set1 = new Set();
var set2 = new Set.from([1, 2, 3]);

注:from构造函数以上三个集合容器都有

要访问Set中的任意一个值,则需要通过elementAt()函数:

1
2
3
var set = new Set.from(["A", "B", "C"]);

print(set.elementAt(1));//打印B
The ABC of Dart Part 5 - 操作符重载 注意Tween Animation对Activity生命周期的影响

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×