Dart 编程 - 集合集


Set 表示对象的集合,其中每个对象只能出现一次。dart:core 库提供了 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()

无效主(){
   设置 numberSet = new Set.from([12,13,14]);
   print("默认实现:${numberSet.runtimeType}");  
   // 所有元素按照插入顺序检索
   for(var no in numberSet) {
      打印(否);
   }
}

它应该产生以下输出-

12
13
14

高级 Dart Collection ─ dart:集合库

dart:collection 库提供了支持 Dart 集合的各种实现的类。我们将在本节中讨论以下主题。

  • 哈希映射
  • 哈希集
  • 链表
  • 队列

哈希映射

HashMap 是基于哈希表的 Map 实现。当您迭代 HashMap 的键或值时,您不能期望特定的顺序。其语法如下所示 -

句法

Identifier= new HashMap()

例子

以下示例展示了如何实现 HashMap -

导入“dart:集合”;
主要的() {
   var 账户 = new HashMap();
   账户['部门']='HR';
   账户['姓名']='汤姆';
   账户['电子邮件']='tom@xyz.com';
   print('添加条目后的地图:${accounts}');
}

它应该产生以下输出-

添加条目后的地图:{email: tom@xyz.com, dept: HR, name: Tom}

向 HashMap 添加多个值

HashMap 类继承了Map 类的addAll()函数。此功能可以一次添加多个值。

句法

HashMap.addAll(可迭代)

其中,Iterable表示要插入的值的列表。

例子

导入“dart:集合”;
主要的() {
   var 账户 = new HashMap();
   accounts.addAll({'部门':'HR','电子邮件':'tom@xyz.com'});
   print('添加条目后的地图:${accounts}');
}

它应该产生以下输出-

添加条目后的地图:{email: tom@xyz.com, dept: HR} 

从 HashMap 中删除值

remove ()clear()函数用于从HashMap 中删除条目。向remove ()函数传递一个表示要删除的条目的键。clear ()函数用于从 Map 中删除所有条目。

例子

导入“dart:集合”;
主要的() {
   var 账户 = new HashMap();
   账户['部门'] = 'HR';
   账户['姓名'] = '汤姆';
   账户['电子邮件'] = 'tom@xyz.com';
   print('添加条目后的地图:${accounts}');
   账户.删除('部门');
   print('删除条目后的地图:${accounts}');  
   账户.clear();
   print('清除条目后的地图:${accounts}');
}

它应该产生以下输出-

添加条目后的地图:{email: tom@xyz.com, dept: HR, name: Tom}
删除条目后的地图:{电子邮件:tom@xyz.com,姓名:Tom}
清除条目后的地图:{}

哈希集

HashSet 是基于无序哈希表的 Set 实现。其语法是 -

句法

标识符 = new HashSet() 

add ()函数可用于填充 HashSet 实例。

例子

导入“dart:集合”;
无效主(){
   设置 numberSet = new HashSet();
   numberSet.add(100);
   numberSet.add(20);
   numberSet.add(5);
   numberSet.add(60);
   numberSet.add(70);
   print("默认实现:${numberSet.runtimeType}");
   for(var no in numberSet){
      打印(否);
   }
}   

它应该产生以下输出-

60 
20 
100 
5 
70

将多个值添加到 HashSet

addAll ()函数允许向 HashSet 添加多个值。下面的例子说明了同样的情况 -

例子

导入“dart:集合”;
无效主(){
   设置 numberSet = new HashSet();
   numberSet.addAll([100,200,300]);
   print("默认实现:${numberSet.runtimeType}");
   for(var no in numberSet){
      打印(否);
   }
}

它应该产生以下输出-

默认实现:_HashSet
200
300
100

从哈希集中删除值

remove ()函数删除传递给它的值。clear ()函数从 HashSet 中删除所有条目。

例子

导入“dart:集合”;
无效主(){
   设置 numberSet = new HashSet();
   numberSet.addAll([100,200,300]);
   print("正在打印哈希值..${numberSet}");  
   numberSet.remove(100);
   print("正在打印哈希值..${numberSet}");  
   numberSet.clear();
   print("正在打印哈希值..${numberSet}");
}

它应该产生以下输出-

打印哈希值.. {200, 300, 100}
打印哈希值.. {200, 300}
打印哈希值..{}
dart_programming_collection.htm