當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Dart LinkedHashSet構造函數用法及代碼示例


dart:collection 庫中LinkedHashSet構造函數 的用法介紹如下。

用法:

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

使用提供的 equalshashCode 創建 insertion-ordered 哈希集。

提供的 equals 必須定義一個穩定的等價關係,並且 hashCode 必須與 equals 一致。

如果您提供 equalshashCode 之一,您通常也應該提供另一個。

某些equalshashCode 函數可能不適用於所有對象。如果提供了 isValidKey ,則它用於檢查不一定是 E 實例的潛在元素,例如 contains 的參數類型為 Object? 。如果 isValidKey 返回 false ,則對於對象,不調用 equalshashCode 函數,並且假定映射中沒有與該對象相等的鍵。 isValidKey 函數默認隻測試對象是否是 E 的實例,這意味著:

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

不需要 isValidKey 參數,因為它默認隻接受 intequalshashCode 接受的值。

如果沒有提供 equalshashCodeisValidKey ,則默認的 isValidKey 將接受所有值。假定默認的相等和哈希碼操作適用於所有對象。

同樣,如果 equalsidenticalhashCodeidentityHashCode 並且 isValidKey 被省略,則結果集是基於身份的,並且 isValidKey 默認接受所有 key 。可以使用 LinkedHashSet.identity 直接創建這樣的Map。

相關用法


注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 LinkedHashSet<E> constructor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。