Dart 集合Set


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()

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

高级Dart集合─dart: collection库

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

  • HashMap
  • HashSet
  • LinkedList
  • Queue

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}

将多个值添加到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() 函数用于从地图中删除所有条目。

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 :{}

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

从哈希集中删除值

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.. {}