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