Dart基础:可迭代的集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart基础:可迭代的集合相关的知识,希望对你有一定的参考价值。

参考技术A

Dart中常用的集合类型: List 、 Set 、 Map 。
其中 List 、 Set 实现了 Iterable 类的接口。
Map 内部使用了不同的数据结构。但使用 Map 的 entry 或 values 属性,也可以将 Map 的元素读取为 Iterable 对象。

Iterable 是一个可被有序访问的元素的集合。Dart中 Iterable 是抽象类,是不能被实例化的。但是可以通过 List 、 Set 创建 Iterable 。

Iterable 与 List 的不同之处在于, Iterable 没有 [] 操作符,因此不能使用如下方式读取特定索引的元素:

但是我们可以用另一种方式来获取:

实现了 Iterable 的类,都是可以使用 for-in 循环进行遍历的。 for-in 通过 Iterator (迭代器),遍历 Iterable 对象。

1. first 和 last

2. firstWhere :
从 Iterable 的对象中,获取满足条件的第一个元素。

3. singleWhere :
从 Iterable 的对象中,获取满足条件的一个元素,但它只期望只有一个元素满足条件。如果超过一个或没有元素满足条件,则会抛 StateError 。用法与 firstWhere 一致。

4.条件检查
使用 Iterable ,有时需要校验集合中的元素是否满足一些条件,可以不使用 for-in 。
Dart提供了 every 方法:
来判断是否所有的元素都满足某个条件

Dart提供了 any 方法:
来判断是否至少有一个元素满足某个条件。

5. where :
返回满足条件的所有元素集合。

6. takeWhile 与 skipWhile

takeWhile 会从 Iterable 对象中获取所有满足条件的元素,直到不满足时,会跳出迭代。

skipWhile 会从 Iterable 对象中跳过所有满足条件的元素,直到不满足时,会获取。

7. map :
Iterable 对象可以使用 map 方法,对集合中的每个元素进行操作或替换,最终返回一个新的集合。

参考资料:
Dart-Language-Tour

Python基础知识—集合

集合 set

定义

由一系列不重复的不可变类型变量组成的可变散列容器。

相当于只有键没有值的字典(键则是集合的数据)。

技术图片

基础操作

创建空集合:

集合名 = set()  

集合名 = set(可迭代对象)

创建具有默认值集合:

集合名 = {1, 2, 3}

集合名 = set(可迭代对象)

添加元素:集合名.add(元素)

删除元素:集合名.discard(元素)

运算

1.交集&:返回共同元素。

s1 = {1, 2, 3}

s2 = {2, 3, 4}

s3 = s1 & s2  # {2, 3}

2.并集 |:返回不重复元素

s1 = {1, 2, 3}

s2 = {2, 3, 4}

s3 = s1 | s2  # {1, 2, 3, 4}

 3.补集-:返回只属于其中之一的元素

 s1 = {1, 2, 3}

 s2 = {2, 3, 4}

 s1 - s2  # {1} 属于s1但不属于s2

 s2 - s1  # {4} 属于s2但不属于s1

 补集^:返回不同的的元素

  s1 = {1, 2, 3}

  s2 = {2, 3, 4}

  s3 = s1 ^ s2  # {1, 4}  等同于(s1-s2 | s2-s1)

技术图片

子集<:判断一个集合的所有元素是否完全在另一个集合中

超集>:判断一个集合是否具有另一个集合的所有元素

s1 = {1, 2, 3}

s2 = {2, 3}

s2 < s1  # True

s1 > s2  # True

相同或不同== !=:判断集合中的所有元素是否和另一个集合相同。

s1 = {1, 2, 3}

s2 = {3, 2, 1}

s1 == s2  # True

s1 != s2  # False

子集或相同,超集或相同 <=  >=

集合推导式

定义:使用简易方法,将可迭代对象转换为集合。

语法:

{表达式 for 变量 in 可迭代对象}

{表达式 for 变量 in 可迭代对象 if 条件}

固定集合 frozenset

定义:不可变的集合。

作用:固定集合可以作为字典的键,还可以作为集合的值。

基础操作:创建固定集合:frozenset(可迭代对象)

运算:等同于set

以上是关于Dart基础:可迭代的集合的主要内容,如果未能解决你的问题,请参考以下文章

深入分析 Dart 集合操作符源码

深入分析 Dart 集合操作符源码

Python基础

Python基础知识—集合

python学习第七天 基础数据类型补充 深浅copy 集合 关键字后面加可迭代对象

掌握 Dart 集合的使用