Set代表对象的集合,其中每个对象只能出现一次,dart:core库提供了Set类来实现相同的函数。
Set - 语法
Identifier=new Set()
或
Identifier=new Set.from(Iterable)
其中, Iterable 表示要添加到集合中的值的列表。
Set - 示例
void main() { Set numberSet=new Set(); numberSet.add(100); numberSet.add(20); numberSet.add(5); numberSet.add(60); numberSet.add(70); print("Default implementation :${numberSet.runtimeType}"); //all elements are retrieved in the order in which they are inserted for(var no in numberSet) { print(no); } }
它应该产生以下输出-
100 20 5 60 70
Set.from()
void main() { Set numberSet=new Set.from([12,13,14]); print("Default implementation :${numberSet.runtimeType}"); //all elements are retrieved in the order in which they are inserted for(var no in numberSet) { print(no); } }
它应该产生以下输出-
12 13 14
Set - Collection
dart:collection库提供了可实现Dart集合的各种实现的类,我们将在本节中讨论以下主题。
- HashMap
- HashSet
- LinkedList
- Queue
Set - HashMap
HashMap是基于哈希表的Map实现, 当您遍历HashMap的键或值时,不会按写入的顺序输出。 语法如下:
Identifier= new HashMap()
HashMap - 示例
import 'dart:collection'; main() { var accounts=new HashMap(); accounts['dept']='HR'; accounts['name']='Tom'; accounts['email']='tom@xyz.com'; print('Map after adding entries :${accounts}'); }
它应该产生以下输出-
Map after adding entries :{email: tom@xyz.com, dept: HR, name: Tom}
HashMap - 添加值
HashMap类从Map类继承了addAll()函数, 此函数可一次添加多个值。
HashMap.addAll(Iterable)
其中, Iterable 表示要插入的值的列表。
import 'dart:collection'; main() { var accounts=new HashMap(); accounts.addAll({'dept':'HR','email':'tom@xyz.com'}); print('Map after adding entries :${accounts}'); }
它应该产生以下输出-
Map after adding entries :{email: tom@xyz.com, dept: HR}
HashMap - 删除值
remove()和clear()函数用于从HashMap中删除条目, 将remove()函数传递给表示要删除的条目的键, clear()函数用于从Map中删除所有条目。
import 'dart:collection'; main() { var accounts=new HashMap(); accounts['dept']='HR'; accounts['name']='Tom'; accounts['email']='tom@xyz.com'; print('Map after adding entries :${accounts}'); accounts.remove('dept'); print('Map after removing entry :${accounts}'); accounts.clear(); print('Map after clearing entries :${accounts}'); }
它应该产生以下输出-
Map after adding entries :{email: tom@xyz.com, dept: HR, name: Tom} Map after removing entry :{email: tom@xyz.com, name: Tom} Map after clearing entries :{}
Set - HashSet
HashSet是基于无序哈希表的Set实现, 相同的语法是-
Identifier=new HashSet()
add()函数可用于填充HashSet实例。
import 'dart:collection'; void main() { Set numberSet=new HashSet(); numberSet.add(100); numberSet.add(20); numberSet.add(5); numberSet.add(60); numberSet.add(70); print("Default implementation :${numberSet.runtimeType}"); for(var no in numberSet){ print(no); } }
它应该产生以下输出-
60 20 100 5 70
HashSet - 增加值
addAll()函数允许向HashSet添加多个值,以下示例说明了相同的内容-
import 'dart:collection'; void main() { Set numberSet=new HashSet(); numberSet.addAll([100,200,300]); print("Default implementation :${numberSet.runtimeType}"); for(var no in numberSet){ print(no); } }
它应该产生以下输出-
Default implementation :_HashSet 200 300 100
HashSet - 删除值
remove()函数删除传递给它的值, clear()函数从HashSet中删除所有条目。
import 'dart:collection'; void main() { Set numberSet=new HashSet(); numberSet.addAll([100,200,300]); print("Printing hashet.. ${numberSet}"); numberSet.remove(100); print("Printing hashet.. ${numberSet}"); numberSet.clear(); print("Printing hashet.. ${numberSet}"); }
它应该产生以下输出-
Printing hashet.. {200, 300, 100} Printing hashet.. {200, 300} Printing hashet.. {}
参考链接
https://www.learnfk.com/dart-programming/dart-programming-collection-set.html