dart:collection
库中LinkedHashMap构造函数
的用法介绍如下。
用法:
LinkedHashMap<K, V>(
{bool equals(
K,
K
)?,
int hashCode(
K
)?,
bool isValidKey(
dynamic
)?}
)
创建一个基于 insertion-ordered hash-table 的 Map 。
如果提供了equals
,则用于将表中的键与新键进行比较。如果省略equals
,则使用 key 自己的Object.==。
类似地,如果提供了hashCode
,则它用于为键生成哈希值,以便将它们放入哈希表中。如果省略,则使用 key 自己的Object.hashCode。
使用的 equals
和 hashCode
方法应该始终保持一致,因此如果 equals(a, b)
则 hashCode(a) == hashCode(b)
。当对象在表中时,对象的哈希值或其比较值不应更改。如果它确实发生了变化,结果是不可预测的。
如果您提供 equals
或 hashCode
之一,则通常还应提供另一个。
某些equals
或hashCode
函数可能不适用于所有对象。如果提供了 isValidKey
,则它用于检查不一定是 K
实例的潜在 key ,例如 operator [] 、 remove 和 containsKey 的参数,它们的类型为 Object?
。如果 isValidKey
返回 false
,则对于对象,不调用 equals
和 hashCode
函数,并且假定映射中没有与该对象相等的键。 isValidKey
函数默认只测试对象是否是 K
的实例。
例子:
LikedHashMap<int,int>(equals: (int a, int b) => (b - a) % 5 == 0,
hashCode: (int e) => e % 5)
此示例映射不需要传递 isValidKey
函数。默认函数精确地接受 int
值,这些值可以安全地传递给 equals
和 hashCode
函数。
如果没有提供 equals
、 hashCode
和 isValidKey
,则默认的 isValidKey
将接受所有 key 。假定默认的相等和哈希码操作适用于所有对象。
同样,如果 equals
是 identical , hashCode
是 identityHashCode 并且 isValidKey
被省略,则生成的映射是基于身份的,并且 isValidKey
默认接受所有 key 。可以使用 LinkedHashMap.identity 直接创建这样的Map。
相关用法
- Dart LinkedHashMap用法及代码示例
- Dart LinkedHashMap.from用法及代码示例
- Dart LinkedHashMap.fromEntries用法及代码示例
- Dart LinkedHashMap.fromIterables用法及代码示例
- Dart LinkedHashMap.identity用法及代码示例
- Dart LinkedHashMap.fromIterable用法及代码示例
- Dart LinkedHashMap.of用法及代码示例
- Dart LinkedHashSet.from用法及代码示例
- Dart LinkedHashSet构造函数用法及代码示例
- Dart LinkedHashSet.identity用法及代码示例
- Dart LinkedHashSet用法及代码示例
- Dart LinkedHashSet.of用法及代码示例
- Dart LinkedList.isEmpty用法及代码示例
- Dart LinkedList用法及代码示例
- Dart Link.resolveSymbolicLinks用法及代码示例
- Dart Link.resolveSymbolicLinksSync用法及代码示例
- Dart LineSplitter用法及代码示例
- Dart ListMixin.expand用法及代码示例
- Dart List.first用法及代码示例
- Dart List.sort用法及代码示例
- Dart ListMixin.contains用法及代码示例
- Dart ListQueue.of用法及代码示例
- Dart ListQueue.contains用法及代码示例
- Dart ListMixin.join用法及代码示例
- Dart ListMixin.setAll用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 LinkedHashMap<K, V> constructor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。