Dart集合

Dart 中的集合 (set) 是唯一元素的无序集合。Dart 通过集合字面量和 Set 类型提供对集合的支持,声明集合语法如下:

var sets = [1,2,3,'hello'] //动态类型集合,包含int也包含String
Set sets = [1,2,3,'hello'] //跟上面一样,声明方式变成直接使用Set类型

或者
Set<int> sets = [1,2,3,4] //强类型集合,只能是int类型
Set<String> sets = ['a','b','c'] //强类型,只能是String类型

在Dart中,集合中元素类型通常都是统一的,但是也有例外,主要分为强类型集合和动态类型即可

1、强类型集合

强类型集合就是显式地声明集合的类型,这样集合中的所有元素都必须是该类型,如下:

Set<int> sets = {1,2,3,4};  //元素类型为int的集合
Set<String> sets = {'a','b','c'};//元素类型为String的集合

2、动态类型集合

如果不显式声明集合类型,Dart 会默认使用 dynamic 类型,此时集合可以包含任何类型的元素。例如:

Set setint = {1,2,3,'hello'} //有int也有String
或
var setstr = {'a','b','c',1,2}

3、空集合

要创建一个空集合,请使用 {} 并在其前加上类型参数,或将 {} 赋值给 Set 类型的变量,如图:

4、使用 add() 或 addAll() 方法向现有集合添加元素,如图:

注意:addAll()函数会自动去除重复元素,但是不保证添加后的顺序

5、使用 .length 获取集合中元素的个数,如下:

var sets = <int>{1,2,3};
print(${sets.length});  //3

6、要创建编译时常量集合,请在集合字面量前添加 const,如下:

var set1 = const <int>{1, 2, 3, 4}; //集合内容不可改变
set1.add(5);  //报错,因为集合不能改变

使用var声明的编译时常量集合虽然不能修改内部元素,但是集合可以重新赋值,如下:

如果要创建不可赋值的编译时常量集合,可以使用final,如图:

7、集合元素后面也支持多写一个逗号,如下:

var s = <int>{1,2,3,4,}  //元素最后有个逗号

8、遍历集合,先判断集合是否为空,然后通过for循环遍历,如图:

还可以先将集合转换为列表,然后再次判断是否为空然后遍历,如图:

标签