dart:collection
庫中HashSet
類的用法介紹如下。
基於 Set 的無序 hash-table 實現。
HashSet
的元素必須具有一致的相等性和 hashCode 實現。這意味著 equals 操作必須在元素上定義一個穩定的等價關係(自反的、對稱的、傳遞的和隨時間一致的),並且 hashCode 必須與相等性一致,這樣對於被認為相等的對象來說也是一樣的。
HashSet
上的大多數簡單操作都是在(可能攤銷的)恒定時間內完成的:add、contains、remove 和 length,前提是對象的哈希碼分布良好。
未指定集合的迭代順序,它取決於所提供元素的哈希碼。但是,順序是穩定的:對同一集合的多次迭代會產生相同的順序,隻要該集合沒有被修改。
注意:請勿在對集合執行操作時修改集合(添加或刪除元素),例如在 forEach 或 containsAll 調用期間調用的函數中,或在迭代集合時。
不要以改變它們在集合中的相等性(以及它們的哈希碼)的方式修改元素。一些特殊類型的集合在平等方麵可能更寬容,在這種情況下,它們應該記錄它們的不同行為和限製。
例子:
final letters = HashSet<String>();
letters.add('A');
letters.addAll({'B', 'C', 'D'});
要檢查集合是否為空,請使用 isEmpty 或 isNotEmpty 。要查找集合中的元素數,請使用 length 。
print(letters.isEmpty); // false
print(letters.length); // 4
print(letters); // fx {A, D, C, B}
要檢查集合是否包含具有特定值的元素,請使用 contains 。
final bExists = letters.contains('B'); // true
forEach 方法使用集合的每個元素調用一個函數。
letters.forEach(print);
// A
// D
// C
// B
要製作該集合的副本,請使用 toSet 。
final anotherSet = letters.toSet();
print(anotherSet); // fx {A, C, D, B}
要刪除元素,請使用 remove 。
final removedValue = letters.remove('A'); // true
print(letters); // fx {B, C, D}
要同時刪除多個元素,請使用 removeWhere 或 removeAll 。
letters.removeWhere((element) => element.startsWith('B'));
print(letters); // fx {D, C}
要刪除此集合中不滿足條件的所有元素,請使用 retainWhere 。
letters.retainWhere((element) => element.contains('C'));
print(letters); // {C}
要刪除所有元素並清空集合,請使用 clear 。
letters.clear();
print(letters.isEmpty); // true
print(letters); // {}
也可以看看:
- Set 是集合的通用接口,其中每個對象隻能出現一次。
- LinkedHashSet 對象根據插入順序存儲。
- SplayTreeSet 按排序順序迭代對象。
- 實現的類型
-
Set<
E> - 可用的擴展
相關用法
- Dart HashSet.of用法及代碼示例
- Dart HashSet構造函數用法及代碼示例
- Dart HashSet.from用法及代碼示例
- Dart HashSet.identity用法及代碼示例
- Dart HashMap.from用法及代碼示例
- Dart HashMap.fromEntries用法及代碼示例
- Dart HashMap.fromIterables用法及代碼示例
- Dart HashMap用法及代碼示例
- Dart HashMap.of用法及代碼示例
- Dart HashMap.fromIterable用法及代碼示例
- Dart HashMap構造函數用法及代碼示例
- Dart HashMap.identity用法及代碼示例
- Dart HttpRequest.postFormData用法及代碼示例
- Dart HttpOverrides用法及代碼示例
- Dart HtmlCollection.last用法及代碼示例
- Dart HeaderValue用法及代碼示例
- Dart HttpClient.findProxy用法及代碼示例
- Dart HttpClientRequest用法及代碼示例
- Dart HtmlEscape用法及代碼示例
- Dart HttpServer.defaultResponseHeaders用法及代碼示例
- Dart HttpClient用法及代碼示例
- Dart HtmlEscapeMode用法及代碼示例
- Dart HtmlCollection.elementAt用法及代碼示例
- Dart HttpRequest.request用法及代碼示例
- Dart HttpClient.findProxyFromEnvironment用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 HashSet<E> class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。