Класс 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
} - Наследование
- Доступные расширения
Конструкторы
- 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 - Является ли
entryLinkedListEntry, принадлежащей этому списку? - 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