Класс 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
} - Наследование
- Доступные расширения
Конструкторы
- 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