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 за постоянное время, если у вас есть только сам элемент.

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

Операторы

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

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

Spec-Zone.ru

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