dart:collection
庫中HashMap構造函數
的用法介紹如下。
用法:
HashMap<K, V>(
{bool equals(
K,
K
)?,
int hashCode(
K
)?,
bool isValidKey(
dynamic
)?}
)
創建基於 Map 的無序 hash-table 。
創建的Map沒有以任何方式排序。當迭代鍵或值時,迭代順序是未指定的,除非它會保持不變,隻要Map沒有改變。
如果提供了equals
,則用於將映射中的鍵與新鍵進行比較。如果省略equals
,則使用 key 自己的Object.==。
類似地,如果提供了hashCode
,它將用於為鍵生成哈希值,以便將它們放置在映射中。如果省略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
的實例。
例子:
HashMap<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 。可以使用 HashMap.identity 直接創建這樣的Map。
相關用法
- Dart HashMap.from用法及代碼示例
- Dart HashMap.fromEntries用法及代碼示例
- Dart HashMap.fromIterables用法及代碼示例
- Dart HashMap用法及代碼示例
- Dart HashMap.of用法及代碼示例
- Dart HashMap.fromIterable用法及代碼示例
- Dart HashMap.identity用法及代碼示例
- Dart HashSet用法及代碼示例
- Dart HashSet.of用法及代碼示例
- Dart HashSet構造函數用法及代碼示例
- Dart HashSet.from用法及代碼示例
- Dart HashSet.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大神的英文原創作品 HashMap<K, V> constructor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。