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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
