当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart HashSet构造函数用法及代码示例


dart:collection 库中HashSet构造函数 的用法介绍如下。

用法:

HashSet<E>(
   {bool equals(
   E,    
   E   
)?,    
   int hashCode(
   E   
)?,    
   bool isValidKey(
   dynamic   
)?}   
)

使用提供的 equals 作为相等性创建一个哈希集。

提供的 equals 必须定义一个稳定的等价关系,并且 hashCode 必须与 equals 一致。

如果省略 equalshashCode,则该集合使用元素的固有 Object.==Object.hashCode

如果您提供 equalshashCode 之一,您通常也应该提供另一个。

某些equalshashCode 函数可能不适用于所有对象。如果提供了 isValidKey ,则它用于检查不一定是 E 实例的潜在元素,例如 contains 的参数类型为 Object? 。如果 isValidKey 返回 false ,则对于对象,不调用 equalshashCode 函数,并且假定映射中没有与该对象相等的键。 isValidKey 函数默认只测试对象是否是 E 的实例,这意味着:

HashSet<int>(equals: (int e1, int e2) => (e1 - e2) % 5 == 0,
             hashCode: (int e) => e % 5)

不需要 isValidKey 参数,因为它默认只接受 intequalshashCode 接受的值。

如果没有提供 equalshashCodeisValidKey ,则默认的 isValidKey 将接受所有值。假定默认的相等和哈希码操作适用于所有对象。

同样,如果 equalsidenticalhashCodeidentityHashCode 并且 isValidKey 被省略,则结果集是基于身份的,并且 isValidKey 默认接受所有 key 。可以使用 HashSet.identity 直接创建这样的Map。

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 HashSet<E> constructor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。