Класс 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.sort((a, b) => a.compareTo(b)); print(growableList); // [A, AB, F, F]
Чтобы перемешать элементы этого списка в случайном порядке, используйте shuffle.
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
- UnmodifiableListView
- Доступные расширения
Конструкторы
- 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 чтение / записьунаследованный геттер
- Возвращает первый элемент.
- hashCode → int только чтениеунаследовано
- Хеш-код этого объекта.
- isEmpty → bool только чтениеунаследовано
- Показывает, не содержит ли эта коллекция элементов.
- isNotEmpty → bool только чтениеунаследовано
- Показывает, содержит ли эта коллекция хотя бы один элемент.
- iterator → Iterator<
E> только чтениеунаследовано - Возвращает новый
Iterator, который позволяет перебирать элементы этогоIterable. - last ↔ E чтение / записьунаследованный геттер
- Возвращает последний элемент.
- length ↔ int чтение / запись
- Количество объектов в этом списке.
- reversed → Iterable<
E> только чтение - Iterable объектов этого списка в обратном порядке.
- runtimeType → Type только чтениеунаследовано
- Представление типа объекта во время выполнения.
- single → E только чтениеунаследовано
- Проверяет, что этот итерируемый объект содержит только один элемент, и возвращает его.
Методы
- add(
E value) → void - Добавляет
valueв конец этого списка, увеличивая его длину на единицу. - addAll(
Iterable< E> iterable) → void - Добавляет все объекты из
iterableв конец этого списка. - any(
bool test(E element)) → bool унаследовано - Проверяет, удовлетворяет ли какой-либо элемент этого итерируемого объекта условию
test. - asMap(
) → Map< int, E> - Неизменяемое представление этого списка в виде Map.
- cast<
R>( ) → List< R> переопределение - Возвращает представление этого списка как списка экземпляров
R. - clear(
) → void - Удаляет из этого списка все объекты; длина списка становится равной нулю.
- contains(
Object? element) → bool унаследовано - Содержит ли коллекция элемент, равный
element. - elementAt(
int index) → E унаследовано - Возвращает элемент под номером
index. - every(
bool test(E element)) → bool унаследовано - Проверяет, удовлетворяет ли каждый элемент этого итерируемого объекта условию
test. - expand<
T>( Iterable< T> toElements(E element)) → Iterable< T> унаследовано - Преобразует каждый элемент этого Iterable в ноль или более элементов.
- fillRange(
int start, int end, [E? fillValue]) → void - Перезаписывает диапазон элементов значением
fillValue. - 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 element)) → void унаследовано - Вызывает
actionдля каждого элемента этого итерируемого объекта в порядке перебора. - getRange(
int start, int end) → Iterable< E> - Создаёт Iterable, который перебирает диапазон элементов.
- indexOf(
E element, [int start = 0]) → int - Первый индекс элемента
elementв этом списке. - indexWhere(
bool test(E element), [int start = 0]) → int - Первый индекс в списке, элемент которого удовлетворяет заданному
test. - insert(
int index, E element) → void - Вставляет
elementв позициюindexэтого списка. - insertAll(
int index, Iterable< E> iterable) → void - Вставляет все объекты из
iterableв позициюindexэтого списка. - join(
[String separator = ""]) → String унаследовано - Преобразует каждый элемент в String и объединяет полученные строки.
- lastIndexOf(
E element, [int? start]) → int - Последний индекс элемента
elementв этом списке. - lastIndexWhere(
bool test(E element), [int? start]) → int - Последний индекс в списке, элемент которого удовлетворяет заданному
test. - 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(
Object? value) → bool - Удаляет первое вхождение
valueиз этого списка. - removeAt(
int index) → E - Удаляет объект в позиции
indexиз этого списка. - removeLast(
) → E - Удаляет и возвращает последний объект в этом списке.
- removeRange(
int start, int end) → void - Удаляет диапазон элементов из списка.
- removeWhere(
bool test(E element)) → void - Удаляет из этого списка все объекты, удовлетворяющие условию
test. - replaceRange(
int start, int end, Iterable< E> replacements) → void - Заменяет диапазон элементов элементами из
replacements. - retainWhere(
bool test(E element)) → void - Удаляет из этого списка все объекты, не удовлетворяющие условию
test. - setAll(
int index, Iterable< E> iterable) → void - Перезаписывает элементы объектами из
iterable. - setRange(
int start, int end, Iterable< E> iterable, [int skipCount = 0]) → void - Записывает некоторые элементы из
iterableв диапазон этого списка. - shuffle(
[Random? random]) → void - Перемешивает элементы этого списка в случайном порядке.
- 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. - sort(
[int compare(E a, E b)?]) → void - Сортирует этот список в порядке, заданном функцией
compare. - sublist(
int start, [int? end]) → List< E> - Возвращает новый список, содержащий элементы между
startиend. - 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 унаследовано - Строковое представление этого объекта.
- where(
bool test(E element)) → Iterable< E> унаследовано - Возвращает новый ленивый Iterable со всеми элементами, удовлетворяющими условию
test. - whereType<
T>( ) → Iterable< T> унаследовано - Возвращает новый ленивый Iterable со всеми элементами типа
T.
Операторы
- operator +(
List< E> other) → List< E> - Возвращает результат объединения этого списка и
other. - operator ==(
Object other) → bool переопределение - Равен ли этот список
other. - operator [](
int index) → E - Объект в заданной
indexсписка. - operator []=(
int index, E value) → void - Устанавливает значение
valueв заданнойindexсписка.
Статические методы
- castFrom<
S, T>( List< S> source) → List< T> переопределение - Адаптирует
source, чтобы он сталList<T>. - copyRange<
T>( List< T> target, int at, List< T> source, [int? start, int? end]) → void - Копирует диапазон из одного списка в другой.
- writeIterable<
T>( List< T> target, int at, Iterable< T> source) → void - Записывает элементы итерируемого объекта в список.
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-core/List-class.html