Spec-Zone.ru › Dart 2

dart:core

Класс 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>
Реализации
  • 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
Доступные расширения
  • EnumByName

Конструкторы

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

Spec-Zone.ru

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