dart:collection
庫中SplayTreeSet
類的用法介紹如下。
可以相對於彼此排序的 Set 個對象。
該集合基於self-balancing 二叉樹。它允許在攤銷的對數時間內進行大多數操作。
使用構造函數中傳遞的compare
函數比較集合的元素,用於排序和相等。如果該集合僅包含一個對象 a
,那麽 set.contains(b)
將返回 true
當且僅當 compare(a, b) == 0
並且甚至不檢查 a == b
的值。如果省略比較函數,則假定對象為 Comparable ,並使用它們的 Comparable.compareTo 方法進行比較。在這種情況下,不可比較的對象(包括 null
)將無法用作元素。
注意:請勿在對集合執行操作時修改集合(添加或刪除元素),例如在 forEach 或 containsAll 調用期間調用的函數中,或在迭代集合時。
不要以改變它們在集合中的相等性(以及它們的哈希碼)的方式修改元素。一些特殊類型的集合在平等方麵可能更寬容,在這種情況下,它們應該記錄它們的不同行為和限製。
例子:
final planets = SplayTreeSet<String>((a, b) => a.compareTo(b));
planets.add('Neptune');
planets.addAll({'Venus', 'Mars', 'Earth', 'Jupiter'});
print(planets); // {Earth, Jupiter, Mars, Neptune, Venus}
要檢查集合是否為空,請使用 isEmpty 或 isNotEmpty 。要查找集合中的元素數,請使用 length 。
final isEmpty = planets.isEmpty; // false
final length = planets.length; // 5
要檢查集合是否包含特定元素,請使用 contains 。
final marsExists = planets.contains('Mars'); // true
要使用索引獲取元素值,請使用 elementAt 。
final elementAt = planets.elementAt(1);
print(elementAt); // Jupiter
要製作集合的副本,請使用 toSet 。
final copySet = planets.toSet(); // a `SplayTreeSet` with the same ordering.
print(copySet); // {Earth, Jupiter, Mars, Neptune, Venus}
要刪除元素,請使用 remove 。
final removedValue = planets.remove('Mars'); // true
print(planets); // {Earth, Jupiter, Neptune, Venus}
要同時刪除多個元素,請使用 removeWhere 。
planets.removeWhere((element) => element.startsWith('J'));
print(planets); // {Earth, Neptune, Venus}
要刪除此集合中不滿足條件的所有元素,請使用 retainWhere 。
planets.retainWhere((element) => element.contains('Earth'));
print(planets); // {Earth}
要刪除所有元素並清空集合,請使用 clear 。
planets.clear();
print(planets.isEmpty); // true
print(planets); // {}
也可以看看:
- Set 是用於對象集合的base-class。
- HashSet 不保證迭代中對象的順序。
- LinkedHashSet 對象根據插入順序存儲。
- 混合類型
-
IterableMixin<
E> > SetMixin<E> - 可用的擴展
相關用法
- Dart SplayTreeSet.lookup用法及代碼示例
- Dart SplayTreeSet.isEmpty用法及代碼示例
- Dart SplayTreeSet.addAll用法及代碼示例
- Dart SplayTreeSet.remove用法及代碼示例
- Dart SplayTreeSet.isNotEmpty用法及代碼示例
- Dart SplayTreeSet.retainAll用法及代碼示例
- Dart SplayTreeSet.toSet用法及代碼示例
- Dart SplayTreeSet.clear用法及代碼示例
- Dart SplayTreeSet.removeAll用法及代碼示例
- Dart SplayTreeSet.of用法及代碼示例
- Dart SplayTreeSet.from用法及代碼示例
- Dart SplayTreeSet.contains用法及代碼示例
- Dart SplayTreeSet.intersection用法及代碼示例
- Dart SplayTreeSet.add用法及代碼示例
- Dart SplayTreeSet.difference用法及代碼示例
- Dart SplayTreeSet.union用法及代碼示例
- Dart SplayTreeMap.from用法及代碼示例
- Dart SplayTreeMap.containsValue用法及代碼示例
- Dart SplayTreeMap.addAll用法及代碼示例
- Dart SplayTreeMap.fromIterables用法及代碼示例
- Dart SplayTreeMap.fromIterable用法及代碼示例
- Dart SplayTreeMap.clear用法及代碼示例
- Dart SplayTreeMap.forEach用法及代碼示例
- Dart SplayTreeMap.putIfAbsent用法及代碼示例
- Dart SplayTreeMap用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 SplayTreeSet<E> class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。