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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。