Dart List由逗号分隔的表达式或值列表表示,括在方括号 ( []
) 中。这是一个简单的 Dart List:
var list = [1, 2, 3];
提示
Dart 推断其list
类型为List<int>
。如果您尝试将非整数对象添加到此列表,分析器或运行时会引发错误。
列表使用从零开始的索引,其中 0 是第一个值的索引,也是list.length - 1
最后一个值的索引。您可以使用属性获取列表的长度.length
,并使用下标运算符 ( []
) 访问列表的值:
var list = [1, 2, 3];
assert(list.length == 3);
assert(list[1] == 2);
list[1] = 1;
assert(list[1] == 1);
要创建编译时常量列表,请const
在列表文字前添加:
var constantList = const [1, 2, 3];
// constantList[1] = 1; // This line will cause an error.
Dart 中的集合是唯一项的无序集合。
这是一个使用集合字面量创建的简单 Dart 集合:
var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};
提示
Dart 推断其halogens
类型为Set<String>
。如果您尝试将错误类型的值添加到集合中,分析器或运行时会引发错误.
要创建空集,请{}
在类型参数前面使用,或分配{}
给类型的变量Set
:
var names = <String>{};
// Set<String> names = {}; // This works, too.
// var names = {}; // Creates a map, not a set.
Set还是Map?
映射字面量的语法与集合字面量类似。由于映射字面量先出现,因此{}
默认为 类型Map
。如果您忘记了 的类型注释{}
或赋值给的变量,Dart 会创建一个 类型的对象Map<dynamic, dynamic>
。
使用add()
或addAll()
方法将项目添加到现有集合:
var elements = <String>{};
elements.add('fluorine');
elements.addAll(halogens);
Map
映射是一个将键和值关联起来的对象。键和值都可以是任何类型的对象。每个键只出现一次,但你可以多次使用同一个值。Dart 对映射的支持由映射字面量和类型提供Map
。
这里有几个使用地图文字创建的简单 Dart Map:
var gifts = {
// Key: Value
'first': 'partridge',
'second': 'turtledoves',
'fifth': 'golden rings'
};
var nobleGases = {
2: 'helium',
10: 'neon',
18: 'argon',
};
可以使用 Map 构造函数创建相同的对象:
var gifts = Map<String, String>();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';
var nobleGases = Map<int, String>();
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon';
使用下标赋值运算符 ( ) 向现有映射中添加新的键值对[]=
:
var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds'; // Add a key-value pair
如果查找不在Map中的键,您将得到null
以下结果:
var gifts = {'first': 'partridge'};
assert(gifts['fifth'] == null);