Dart基础-集合类型
1. 集合类型的定义
对于集合类型,Dart则内置了最常用的三种:List / Set / Map
。
其中,List
可以这样来定义:
// List定义// 1.使用类型推断定义
var letters = ['a', 'b', 'c', 'd'];
print('$letters ${
letters.runtimeType}');
// 2.明确指定类型
List<int> numbers = [1, 2, 3, 4];print('$numbers ${
numbers.runtimeType}');
其中,set
可以这样来定义:
- 其实,也就是把
[]
换成{}
就好了。 Set
和List
最大的两个不同就是:Set
是无序的,并且元素是不重复的。
// Set的定义
// 1.使用类型推导定义
var lettersSet = {
'a', 'b', 'c', 'd'};
print('$lettersSet ${
lettersSet.runtimeType}');
// 2.明确指定类型
Set<int> numbersSet = {
1, 2, 3, 4};
print('$numbersSet ${
numbersSet.runtimeType}');
最后,Map
是我们常说的字典类型,它的定义是这样的:
// Map的定义
// 1.使用类型推导定义
var infoMap1 = {
'name': 'why', 'age': 18};
print('$infoMap1 ${
infoMap1.runtimeType}');
// 2.明确指定类型
Map<String, Object> infoMap2 = {
'height': 1.88, 'address': '北京市'};
print('$infoMap2 ${
infoMap2.runtimeType}');
2. 集合的常见操作
了解了这三个集合的定义方式之后,我们来看一些最基础的公共操作
第一类,是所有集合都支持的获取长度的属性length
:
// 获取集合的长度
print(letters.length);
print(lettersSet.length);
print(infoMap1.length);
第二类, 是添加/删除/包含操作
- 并且,对
List
来说,由于元素是有序的,它还提供了一个删除指定索引位置上元素的方法
// 添加/删除/包含元素
numbers.add(5);
numbersSet.add(5);
print('$numbers $numbersSet');
numbers.remove(1);
numbersSet.remove(1);
print('$numbers $numbersSet');
print(numbers.contains(2));
print(numbersSet.contains(2));
// List根据index删除元素
numbers.removeAt(3);
print('$numbers');
第三类,是Map
的操作
- 由于它有key和value,因此无论是读取值,还是操作,都要明确是基于key的,还是基于value的,或者是基于key/value对的。
// Map的操作
// 1.根据key获取
valueprint(infoMap1['name']);
// 2.获取所有的entries
print('${
infoMap1.entries} ${
infoMap1.entries.runtimeType}');
// 3.获取所有的keys
print('${
infoMap1.keys} ${
infoMap1.keys.runtimeType}');
// 4.获取所有的values
print('${
infoMap1.values} ${
infoMap1.values.runtimeType}');
// 5.判断是否包含某个key或者value
print('${infoMap1.containsKey('age')} ${
infoMap1.containsValue(18)}'); // true true
// 6.根据key删除元素
infoMap1.remove('age');print('${
infoMap1}');
参考:
Coderwhy老师的公众号