LinkedHashSet<E> 构造函数
使用提供的 equals 和 hashCode 创建一个有序插入的哈希集合。
提供的 equals 必须定义一个稳定的等价关系,且 hashCode 必须与 equals 一致。
如果您提供了 equals 或 hashCode 之一,通常也应该提供另一个。
某些 equals 或 hashCode 函数可能不适用于所有对象。如果提供了 isValidKey,它用于检查一个可能不是 E 实例的潜在元素,例如 contains 的参数,它被类型化为 Object?。如果 isValidKey 返回 false,则对于对象,不会调用 equals 和 hashCode 函数,并且假定不存在等于该对象的键。默认情况下,isValidKey 函数仅测试对象是否是 E 的实例,这意味着
LinkedHashSet<int>(equals: (int e1, int e2) => (e1 - e2) % 5 == 0,
hashCode: (int e) => e % 5);
不需要 isValidKey 参数,因为默认情况下它仅接受由 equals 和 hashCode 接受的 int 值。
如果没有提供 equals、hashCode 或 isValidKey,则默认的 isValidKey 接受所有值。默认的等价性和哈希码操作假定适用于所有对象。
同样,如果 equals 是 identical,hashCode 是 identityHashCode,并且省略了 isValidKey,则结果集合基于身份,并且默认接受所有键。可以使用 LinkedHashSet.identity 直接创建此类映射。
实现
external factory LinkedHashSet(
{bool Function(E, E)? equals,
int Function(E)? hashCode,
bool Function(dynamic)? isValidKey});