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


Dart HashSet用法及代碼示例


dart:collection 庫中HashSet 類的用法介紹如下。

基於 Set 的無序 hash-table 實現。

HashSet 的元素必須具有一致的相等性和 hashCode 實現。這意味著 equals 操作必須在元素上定義一個穩定的等價關係(自反的、對稱的、傳遞的和隨時間一致的),並且 hashCode 必須與相等性一致,這樣對於被認為相等的對象來說也是一樣的。

HashSet 上的大多數簡單操作都是在(可能攤銷的)恒定時間內完成的:addcontainsremovelength,前提是對象的哈希碼分布良好。

未指定集合的迭代順序,它取決於所提供元素的哈希碼。但是,順序是穩定的:對同一集合的多次迭代會產生相同的順序,隻要該集合沒有被修改。

注意:請勿在對集合執行操作時修改集合(添加或刪除元素),例如在 forEachcontainsAll 調用期間調用的函數中,或在迭代集合時。

不要以改變它們在集合中的相等性(以及它們的哈希碼)的方式修改元素。一些特殊類型的集合在平等方麵可能更寬容,在這種情況下,它們應該記錄它們的不同行為和限製。

例子:

final letters = HashSet<String>();

要將數據添加到集合中,請使用 addaddAll

letters.add('A');
letters.addAll({'B', 'C', 'D'});

要檢查集合是否為空,請使用 isEmptyisNotEmpty 。要查找集合中的元素數,請使用 length

print(letters.isEmpty); // false
print(letters.length); // 4
print(letters); // fx {A, D, C, B}

要檢查集合是否包含具有特定值的元素,請使用 contains

final bExists = letters.contains('B'); // true

forEach 方法使用集合的每個元素調用一個函數。

letters.forEach(print);
// A
// D
// C
// B

要製作該集合的副本,請使用 toSet

final anotherSet = letters.toSet();
print(anotherSet); // fx {A, C, D, B}

要刪除元素,請使用 remove

final removedValue = letters.remove('A'); // true
print(letters); // fx {B, C, D}

要同時刪除多個元素,請使用 removeWhereremoveAll

letters.removeWhere((element) => element.startsWith('B'));
print(letters); // fx {D, C}

要刪除此集合中不滿足條件的所有元素,請使用 retainWhere

letters.retainWhere((element) => element.contains('C'));
print(letters); // {C}

要刪除所有元素並清空集合,請使用 clear

letters.clear();
print(letters.isEmpty); // true
print(letters); // {}

也可以看看:

  • Set 是集合的通用接口,其中每個對象隻能出現一次。
  • LinkedHashSet 對象根據插入順序存儲。
  • SplayTreeSet 按排序順序迭代對象。
實現的類型

Set<E>

可用的擴展

EnumByName

相關用法


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