dart:collection
庫中LinkedList
類的用法介紹如下。
擴展 LinkedListEntry 的元素的專用 double-linked 列表。
這不是通用的數據結構。它隻接受 extend
和 LinkedListEntry 類的元素。請參閱Queue 實現以獲取允許在末尾添加和刪除恒定時間的通用集合。
這不是List 實現。盡管它的名字,這個類沒有實現List 接口。它不允許按索引進行恒定時間查找。
因為元素本身包含這個鏈表的鏈接,所以每個元素一次隻能在一個鏈表中。要將元素添加到另一個列表,必須首先將其從當前列表(如果有)中刪除。出於同樣的原因,remove 和 contains 方法基於 identity
,即使 LinkedListEntry 選擇覆蓋 Object.== 也是如此。
作為返回,每個元素都知道它自己在鏈表中的位置,以及它在哪個鏈表中。當你隻有元素時,這允許恒定時間 LinkedListEntry.insertAfter 、 LinkedListEntry.insertBefore 和 LinkedListEntry.unlink 操作。
LinkedList
還允許在任一端添加和刪除恒定時間,以及恒定時間長度獲取器。
例子:
class EntryItem extends LinkedListEntry<EntryItem> {
final int id;
final String text;
EntryItem(this.id, this.text);
@override
String toString() {
return '$id : $text';
}
}
void main(){
final linkedList = LinkedList<EntryItem>();
linkedList.addAll(
[EntryItem(1, 'A'), EntryItem(2, 'B'), EntryItem(3, 'C')]);
print(linkedList.first); // 1 : A
print(linkedList.last); // 3 : C
// Add new item after first item.
linkedList.first.insertAfter(EntryItem(15, 'E'));
// Add new item before last item.
linkedList.last.insertBefore(EntryItem(10, 'D'));
// Iterate items.
for (var entry in linkedList) {
print(entry);
// 1 : A
// 15 : E
// 2 : B
// 10 : D
// 3 : C
}
// Remove item using index from list.
linkedList.elementAt(2).unlink();
print(linkedList); // (1 : A, 15 : E, 10 : D, 3 : C)
// Remove first item.
linkedList.first.unlink();
print(linkedList); // (15 : E, 10 : D, 3 : C)
// Remove last item from list.
linkedList.remove(linkedList.last);
print(linkedList); // (15 : E, 10 : D)
// Remove all items.
linkedList.clear();
print(linkedList.length); // 0
print(linkedList.isEmpty); // true
}
- 繼承
- 可用的擴展
相關用法
- Dart LinkedList.isEmpty用法及代碼示例
- Dart LinkedHashMap用法及代碼示例
- Dart LinkedHashMap.from用法及代碼示例
- Dart LinkedHashMap.fromEntries用法及代碼示例
- Dart LinkedHashMap.fromIterables用法及代碼示例
- Dart LinkedHashSet.from用法及代碼示例
- Dart LinkedHashSet構造函數用法及代碼示例
- Dart LinkedHashMap.identity用法及代碼示例
- Dart LinkedHashMap.fromIterable用法及代碼示例
- Dart LinkedHashSet.identity用法及代碼示例
- Dart LinkedHashMap.of用法及代碼示例
- Dart LinkedHashSet用法及代碼示例
- Dart LinkedHashSet.of用法及代碼示例
- Dart LinkedHashMap構造函數用法及代碼示例
- 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大神的英文原創作品 LinkedList<E extends LinkedListEntry<E>> class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。