Класс List< E>
Индексируемое множество объектов с длиной.
Подклассы этого класса реализуют различные типы списков. Наиболее распространённые типы списков:
-
Список фиксированной длины
Возникает ошибка при попытке использовать операции, которые могут изменить длину списка.
-
Изменяемый список
Полная реализация API, определённого в этом классе.
По умолчанию изменяемый список, созданный с помощью [], хранит внутренний буфер и увеличивает его при необходимости. Это гарантирует, что последовательность операций add будет выполняться за амортизированное постоянное время. Прямое задание длины может занять время, пропорциональное новой длине, и может изменить внутреннюю ёмкость таким образом, что последующая операция добавления потребует немедленного увеличения ёмкости буфера. Другие реализации списков могут иметь различное поведение производительности.
Пример списка фиксированной длины:
final fixedLengthList = List<int>.filled(5, 0); // Creates fixed-length list. print(fixedLengthList); // [0, 0, 0, 0, 0] fixedLengthList[0] = 87; fixedLengthList.setAll(1, [1, 2, 3]); print(fixedLengthList); // [87, 1, 2, 3, 0] // Fixed length list length can't be changed or increased fixedLengthList.length = 0; // Throws fixedLengthList.add(499); // Throws
Пример изменяемого списка:
final growableList = <String>['A', 'B']; // Creates growable list.
Для добавления данных в изменяемый список используйте operator[]=, add или addAll.
growableList[0] = 'G';
print(growableList); // [G, B]
growableList.add('X');
growableList.addAll({'C', 'B'});
print(growableList); // [G, B, X, C, B] Чтобы проверить наличие и положение элемента в списке, используйте indexOf или lastIndexOf.
final indexA = growableList.indexOf('A'); // -1 (not in the list)
final firstIndexB = growableList.indexOf('B'); // 1
final lastIndexB = growableList.lastIndexOf('B'); // 4 Для удаления элемента из изменяемого списка используйте remove, removeAt, removeLast, removeRange или removeWhere.
growableList.remove('C');
growableList.removeLast();
print(growableList); // [G, B, X] Для вставки элемента в заданную позицию списка, используйте insert или insertAll.
growableList.insert(1, 'New'); print(growableList); // [G, New, B, X]
Для замены диапазона элементов в списке, используйте fillRange, replaceRange или setRange.
growableList.replaceRange(0, 2, ['AB', 'A']); print(growableList); // [AB, A, B, X] growableList.fillRange(2, 4, 'F'); print(growableList); // [AB, A, F, F]
Для сортировки элементов списка, используйте sort.
growableList.shuffle(); print(growableList); // e.g. [AB, F, A, F]
Для поиска первого элемента, удовлетворяющего определённому предикату, или задания значения по умолчанию, если таковых нет, используйте firstWhere.
bool isVowel(String char) => char.length == 1 && "AEIOU".contains(char); final firstVowel = growableList.firstWhere(isVowel, orElse: () => ''); // ''
Существуют аналогичные методы lastWhere и singleWhere.
Список является Iterable и поддерживает все его методы, включая where, map, whereType и toList.
Списки являются Iterable. Итерация происходит в порядке индексов значений. Изменение значений не влияет на итерацию, но изменение допустимых индексов (то есть изменение длины списка) между шагами итерации вызывает ConcurrentModificationError. Это означает, что ConcurrentModificationError могут бросать только изменяемые списки. Если длина временно изменяется и восстанавливается перед продолжением итерации, итератор может этого не обнаружить.
Обычно не допускается изменение длины списка (добавление или удаление элементов) во время выполнения операции со списком, например, во время вызова forEach или sort. Изменение длины списка во время итерации, как непосредственно, так и через итерацию Iterable, поддерживаемого списком, нарушит итерацию.
- Реализованные типы
-
-
Iterable<
T>
-
Iterable<
- Реализации
- DomRectList
- DomStringList
- FileList
- Float32List
- Float32x4List
- Float64List
- Float64x2List
- HtmlCollection
- ImmutableListMixin
- Int8List
- Int16List
- Int32List
- Int32x4List
- Int64List
- LengthList
- ListMixin
- MimeTypeArray
- NodeList
- NumberList
- PluginArray
- SourceBufferList
- SpeechGrammarList
- StringList
- TextTrackCueList
- TextTrackList
- TouchList
- TransformList
- Uint8ClampedList
- Uint8List
- Uint16List
- Uint32List
- Uint64List
- UnmodifiableFloat32ListView
- UnmodifiableFloat32x4ListView
- UnmodifiableFloat64ListView
- UnmodifiableFloat64x2ListView
- UnmodifiableInt8ListView
- UnmodifiableInt16ListView
- UnmodifiableInt32ListView
- UnmodifiableInt32x4ListView
- UnmodifiableInt64ListView
- UnmodifiableListView
- UnmodifiableUint8ClampedListView
- UnmodifiableUint8ListView
- UnmodifiableUint16ListView
- UnmodifiableUint32ListView
- UnmodifiableUint64ListView
- Доступные расширения
Конструкторы
- List([int? length]) factory
- Создаёт список заданной длины.
- List.empty({bool growable = false}) factory
- Создаёт новый пустой список.
- List.filled(int length, E fill, {bool growable = false}) factory
- Создаёт список заданной длины со значением
fillв каждой позиции. - List.from(Iterable elements, {bool growable = true}) factory
- Создаёт список, содержащий все
elements. - List.generate(int length, E generator(int index), {bool growable = true}) factory
- Генерирует список значений.
- List.of(Iterable<
E> elements, {bool growable = true}) factory - Создаёт список из
elements. - List.unmodifiable(Iterable elements) factory
- Создаёт неизменяемый список, содержащий все
elements.
Свойства
- first ↔ E read / write, inherited-getter
- Возвращает первый элемент.
- hashCode → int только для чтения, унаследованно
- Хэш-код этого объекта.
- isEmpty → bool только для чтения, унаследованно
- Пуст ли этот набор элементов.
- isNotEmpty → bool только для чтения, унаследованно
- Содержит ли этот набор по крайней мере один элемент.
- iterator → Iterator<
E> только для чтения, унаследованно - Возвращает новый
Iterator, позволяющий итерировать элементы этогоIterable. - last ↔ E read / write, inherited-getter
- Возвращает последний элемент.
- length ↔ int read / write
- Количество объектов в этом списке.
- reversed → Iterable<
E> только для чтения - Iterable объектов в этом списке в обратном порядке.
- runtimeType → Type только для чтения, унаследованно
- Представление типа объекта во время выполнения.
- single → E только для чтения, унаследованно
- Проверяет, содержит ли этот итерируемый объект только один элемент, и возвращает этот элемент.
Методы
- добавить(
E значение) → void - Добавляет
valueв конец этого списка, увеличивая длину на единицу. - добавитьВсе(
Iterable< E> список) → void - Добавляет все объекты из
iterableв конец этого списка. - есть(
bool проверка(E элемент)) → bool inherited - Проверяет, удовлетворяет ли какой-либо элемент этого итерируемого объекта условию
test. - какMap(
) → Map< int, E> - Неизменяемый вид Map этого списка.
- привестиТип<
R>( ) → List< R> override - Возвращает представление этого списка в виде списка экземпляров
R. - очистить(
) → void - Удаляет все объекты из этого списка; длина списка становится равной нулю.
- содержит(
Object? элемент) → bool inherited - Содержит ли коллекция элемент, равный
element. - элементВИндексе(
int индекс) → E inherited - Возвращает элемент под номером
index. - все(
bool проверка(E элемент)) → bool inherited - Проверяет, удовлетворяет ли каждый элемент этого итерируемого объекта условию
test. - расширить<
T>( Iterable< T> кЭлементам(E элемент)) → Iterable< T> inherited - Расширяет каждый элемент этого итерируемого объекта до нуля или более элементов.
- заполнитьДиапазон(
int начало, int конец, [E? значениеЗаполнения]) → void - Заменяет диапазон элементов значением
fillValue. - первыйГде(
bool проверка(E элемент), {E илиElse()?}) → E inherited - Возвращает первый элемент, удовлетворяющий заданному предикату
test. - сложить<
T>( T начальноеЗначение, T объединить(T предыдущееЗначение, E элемент)) → T inherited - Сводит коллекцию к одному значению, итеративно комбинируя каждый элемент коллекции с существующим значением
- последоватьЗа(
Iterable< E> другой) → Iterable< E> inherited - Возвращает ленивую конкатенацию этого итерируемого объекта и
other. - каждыйЭлемент(
void действие(E элемент)) → void inherited - Вызывает
actionдля каждого элемента этого итерируемого объекта в порядке итерации. - получитьДиапазон(
int начало, int конец) → Iterable< E> - Создает Iterable, который перебирает диапазон элементов.
- индекс(
E элемент, [int начало = 0]) → int - Первый индекс
elementв этом списке. - индексГде(
bool проверка(E элемент), [int начало = 0]) → int - Первый индекс в списке, удовлетворяющий предоставленной
test. - вставить(
int индекс, E элемент) → void - Вставляет
elementв позициюindexв этот список. - вставитьВсе(
int индекс, Iterable< E> список) → void - Вставляет все объекты из
iterableв позициюindexв этот список. - соединить(
[String разделитель = ""]) → String inherited - Преобразует каждый элемент в String и конкатенирует строки.
- последнийИндекс(
E элемент, [int? начало]) → int - Последний индекс
elementв этом списке. - последнийИндексГде(
bool проверка(E элемент), [int? начало]) → int - Последний индекс в списке, удовлетворяющий предоставленному
test. - последнийГде(
bool проверка(E элемент), {E илиElse()?}) → E inherited - Возвращает последний элемент, удовлетворяющий заданному предикату
test. - преобразовать<
T>( T кЭлементу(E e)) → Iterable< T> inherited - Текущие элементы этого итерируемого объекта, изменённые посредством
toElement. - методНеНайден(
Invocation вызов) → dynamic inherited - Вызывается при обращении к несуществующему методу или свойству.
- свести(
E объединить(E значение, E элемент)) → E inherited - Сводит коллекцию к одному значению, итеративно комбинируя элементы коллекции с помощью предоставленной функции.
- удалить(
Object? значение) → bool - Удаляет первое вхождение
valueиз этого списка. - удалитьВИндексе(
int индекс) → E - Удаляет объект в позиции
indexиз этого списка. - удалитьПоследний(
) → E - Удаляет и возвращает последний объект в этом списке.
- удалитьДиапазон(
int начало, int конец) → void - Удаляет диапазон элементов из списка.
- удалитьГде(
bool проверка(E элемент)) → void - Удаляет все объекты из этого списка, удовлетворяющие
test. - заменитьДиапазон(
int начало, int конец, Iterable< E> замещения) → void - Заменяет диапазон элементов элементами из
replacements. - сохранитьГде(
bool проверка(E элемент)) → void - Удаляет все объекты из этого списка, которые не удовлетворяют
test. - установитьВсе(
int индекс, Iterable< E> список) → void - Заменяет элементы объектами из
iterable. - установитьДиапазон(
int начало, int конец, Iterable< E> список, [int пропускатьСчёт = 0]) → void - Записывает некоторые элементы
iterableв диапазон этого списка. - перемешать(
[Random? рандом]) → void - Случайно перемешивает элементы этого списка.
- единственныйГде(
bool проверка(E элемент), {E илиElse()?}) → E inherited - Возвращает единственный элемент, удовлетворяющий
test. - пропустить(
int количество) → Iterable< E> inherited - Возвращает Iterable, который предоставляет все элементы, кроме первых
countэлементов. - пропуститьПока(
bool проверка(E значение)) → Iterable< E> inherited - Возвращает
Iterable, который пропускает ведущие элементы, покаtestвыполняется. - отсортировать(
[int сравнить(E a, E b)?]) → void - Сортирует этот список в соответствии с порядком, заданным функцией
compare. - подсписок(
int начало, [int? конец]) → List< E> - Возвращает новый список, содержащий элементы между
startиend. - взять(
int количество) → Iterable< E> inherited - Возвращает ленивый итерируемый объект первых
countэлементов этого итерируемого объекта. - взятьПока(
bool проверка(E значение)) → Iterable< E> inherited - Возвращает ленивый итерируемый объект ведущих элементов, удовлетворяющих
test. - вСписок(
{bool изменяемый = true}) → List< E> inherited - Создаёт List, содержащий элементы этого итерируемого объекта.
- toSet(
) → Множество< E> унаследованный - Создаёт множество, содержащее те же элементы, что и этот итерируемый объект.
- toString(
) → Строка унаследованный - Строковое представление этого объекта.
- where(
bool test(E element)) → Итерируемый< E> унаследованный - Возвращает новый ленивый итерируемый объект со всеми элементами, удовлетворяющими предикату
test. - whereType<
T>( ) → Итерируемый< T> унаследованный - Возвращает новый ленивый итерируемый объект со всеми элементами, имеющими тип
T.
Операторы
- operator +(
Список< E> other) → Список< E> - Возвращает конкатенацию этого списка и
other. - operator ==(
Объект other) → bool переопределение - Является ли этот список равным
other. - operator [](
int index) → E - Объект по заданному
indexв списке. - operator []=(
int index, E value) → void - Устанавливает значение по заданному
indexв списке наvalue.
Статические методы
- castFrom<
S, T>( Список< S> source) → Список< T> переопределение - Приспосабливает
sourceдля того, чтобы он сталList<T>. - copyRange<
T>( Список< T> target, int at, Список< T> source, [int? start, int? end]) → void - Скопировать диапазон одного списка в другой список.
- writeIterable<
T>( Список< T> target, int at, Итерируемый< T> source) → void - Записать элементы итерируемого объекта в список.
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-core/List-class.html