Spec-Zone.ru › Dart 2

dart:collection

Класс LinkedList<E extends LinkedListEntry<E>>

Специализированный двусвязный список элементов, расширяющий LinkedListEntry.

Это не обобщенная структура данных. Она принимает только элементы, которые расширяют класс LinkedListEntry. Обратитесь к реализациям Queue для обобщенных коллекций, которые позволяют добавлять и удалять элементы в конце за постоянное время.

Это не реализация List. Несмотря на название, этот класс не реализует интерфейс List. Он не позволяет выполнять поиск по индексу за постоянное время.

Поскольку сами элементы содержат ссылки этого связанного списка, каждый элемент может быть только в одном списке одновременно. Чтобы добавить элемент в другой список, его необходимо сначала удалить из текущего списка (если таковой есть). По этой же причине методы remove и contains основаны на тождестве, даже если LinkedListEntry выбирает переопределить Object.==.

Взамен каждый элемент знает своё место в связанном списке, а также в каком списке он находится. Это позволяет выполнять операции LinkedListEntry.insertAfter, LinkedListEntry.insertBefore и LinkedListEntry.unlink за постоянное время, когда у вас есть только сам элемент.

A 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
}
Наследование
  • Object
  • Iterable<E>
  • LinkedList
Доступные расширения
  • EnumByName

Конструкторы

LinkedList()
Создаёт новый пустой связанный список.

Свойства

first → E
только для чтения, переопределено
Возвращает первый элемент.
hashCode → int
только для чтения, унаследовано
Хэш-код этого объекта.
isEmpty → bool
только для чтения, переопределено
Является ли эта коллекция пустой.
isNotEmpty → bool
только для чтения, унаследовано
Содержит ли эта коллекция хотя бы один элемент.
iterator → Iterator<E>
только для чтения, переопределено
Возвращает новый Iterator, который позволяет итерировать элементы этого Iterable.
last → E
только для чтения, переопределено
Возвращает последний элемент.
length → int
только для чтения, переопределено
Возвращает количество элементов в этом.
runtimeType → Type
только для чтения, унаследовано
Представление типа объекта во время выполнения.
single → E
только для чтения, переопределено
Проверяет, что в этом итерируемом объекте только один элемент, и возвращает этот элемент.

Методы

add(E entry) → void
Добавляет entry в конец связанного списка.
addAll(Iterable<E> entries) → void
Добавляет entries в конец связанного списка.
addFirst(E entry) → void
Добавляет entry в начало связанного списка.
any(bool test(E element)) → bool
inherited
Проверяет, удовлетворяет ли какой-либо элемент этого итерируемого объекта test.
cast<R>() → Iterable<R>
inherited
Предоставляет представление этого итерируемого объекта как итерируемого объекта экземпляров R.
clear() → void
Удаляет все элементы из этого связанного списка.
contains(Object? entry) → bool
override
Является ли entry LinkedListEntry, принадлежащей этому списку?
elementAt(int index) → E
inherited
Возвращает index-й элемент.
every(bool test(E element)) → bool
inherited
Проверяет, удовлетворяет ли каждый элемент этого итерируемого объекта test.
expand<T>(Iterable<T> toElements(E element)) → Iterable<T>
inherited
Расширяет каждый элемент этого Iterable на ноль или более элементов.
firstWhere(bool test(E element), {E orElse()?}) → E
inherited
Возвращает первый элемент, удовлетворяющий заданному предикату test.
fold<T>(T initialValue, T combine(T previousValue, E element)) → T
inherited
Сводит коллекцию к одному значению, итеративно комбинируя каждый элемент коллекции с существующим значением
followedBy(Iterable<E> other) → Iterable<E>
inherited
Возвращает ленивую конкатенацию этого итерируемого объекта и other.
forEach(void action(E entry)) → void
override
Вызывает action для каждого элемента в этом связанном списке.
join([String separator = ""]) → String
inherited
Преобразует каждый элемент в String и конкатенирует строки.
lastWhere(bool test(E element), {E orElse()?}) → E
inherited
Возвращает последний элемент, удовлетворяющий заданному предикату test.
map<T>(T toElement(E e)) → Iterable<T>
inherited
Текущие элементы этого итерируемого объекта, измененные с помощью toElement.
noSuchMethod(Invocation invocation) → dynamic
inherited
Вызывается, когда обращаются к несуществующему методу или свойству.
reduce(E combine(E value, E element)) → E
inherited
Сводит коллекцию к одному значению, итеративно комбинируя элементы коллекции с помощью предоставленной функции.
remove(E entry) → bool
Удаляет entry из связанного списка.
singleWhere(bool test(E element), {E orElse()?}) → E
inherited
Возвращает единственный элемент, удовлетворяющий test.
skip(int count) → Iterable<E>
inherited
Возвращает Iterable, содержащий все, кроме первых count элементов.
skipWhile(bool test(E value)) → Iterable<E>
inherited
Возвращает Iterable, пропускающий начальные элементы, пока test выполняется.
take(int count) → Iterable<E>
inherited
Возвращает ленивый итерируемый объект, содержащий первые count элементов этого итерируемого объекта.
takeWhile(bool test(E value)) → Iterable<E>
inherited
Возвращает ленивый итерируемый объект, содержащий начальные элементы, удовлетворяющие test.
toList({bool growable = true}) → List<E>
inherited
Создает List, содержащий элементы этого Iterable.
toSet() → Set<E>
inherited
Создает Set, содержащий те же элементы, что и этот итерируемый объект.
toString() → String
inherited
Возвращает строковое представление (некоторых) элементов this.
where(bool test(E element)) → Iterable<E>
inherited
Возвращает новый ленивый Iterable со всеми элементами, удовлетворяющими предикату test.
whereType<T>() → Iterable<T>
inherited
Возвращает новый ленивый Iterable со всеми элементами, имеющими тип T.

Операторы

operator ==(Object other) → bool
inherited
Оператор равенства.

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-collection/LinkedList-class.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API