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循环遍历,如图:


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




