列表,可索引的对象的集合。

本类的子类实现了不同的List。最常见的是:

  • 固定长度的List。 当试图使用能更改List长度的操作时,发生错误。

  • 可增长的List。完全实现了本类中定义的API。

默认的可增长List由new List()[]返回, 它维护一个内部缓冲区,并在必要的时候增大缓冲。 这保证一个序列的add操作都会在平摊的固定时间内执行。 直接设置长度可能花费与新长度成正比的时间, 并且,改变内部容量会使接下来的add操作需要立即增加缓冲区容量。 其它的List实现可能有不同的性能表现。

下面的代码说明部分List实现仅支持API的部分。

List<int> fixedLengthList = new List(5);
fixedLengthList.length = 0;  // Error
fixedLengthList.add(499);    // Error
fixedLengthList[0] = 87;
List<int> growableList = [1, 2];
growableList.length = 0;
growableList.add(499);
growableList[0] = 87;

List是Iterable可迭代对象,并按索引顺序进行迭代。 更改值并不会影响迭代,但是会改变有效的索引— 也就是改变List的长度— 导致迭代步之间产生一个ConcurrentModificationError。 这也意味着,仅可增长的List会抛出ConcurrentModificationError。 如果长度暂时改变,并在继续迭代之前恢复,迭代器并不会检测到。

当一个操作正在List上执行时,通常情况并不允许修改List的长度(添加或删除元素)。 例如,在调用forEachsort期间。 在迭代期间修改List长度,无论是直接迭代, 还是通过List支持的可迭代对象迭代,都将出错。

Implements
Implemented by

Constructors

List([int length])

创建一个指定长度的List。

factory
List.filled(int length, E fill, {bool growable: false})

通过指定长度创建一个固定长度的List,并使用fill初始化每个位置的值:

factory
List.from(Iterable elements, {bool growable: true})

创建一个包含所有elements的List。

factory
List.generate(int length, E generator(int index), {bool growable: true})

生成一个包含所有值的List。

factory
List.unmodifiable(Iterable elements)

创建一个包含所有elements的,不可修改的List。

factory

Properties

first → E

返回第一个元素。

read-only, inherited
hashCode int

获取对象的哈希值。

read-only, inherited
isEmpty bool

如果this没有元素,则返回true

read-only, inherited
isNotEmpty bool

如果集合中至少有一个元素,返回true

read-only, inherited
iterator Iterator<E>

返回Iterator,被允许迭代Iterable的所有元素。

read-only, inherited
last → E

返回最后一个元素。

read-only, inherited
length int

返回List中对象的数量。

read / write
reversed Iterable<E>

倒序返回List中对象的Iterable

read-only
runtimeType Type

表示对象的运行时类型。

read-only, inherited
single → E

检查可迭代对象仅有一个元素,并返回那个元素。

read-only, inherited

Operators

operator ==(other) bool

相等操作符。

inherited
operator [](int index) → E

返回List中指定index位置的对象。 如果index超出界限,将抛出RangeError

operator []=(int index, E value) → void

使用value设置指定index位置的值。 如果index超出界限,将抛出RangeError

Methods

add(E value) → void

在List的末尾添加value,并扩展1个长度。

addAll(Iterable<E> iterable) → void

iterable的所有对象附加到List的末尾。

any(bool f(E element)) bool

检查可迭代对象是否有任何一个元素满足test

inherited
asMap() Map<int, E>

返回一个不可修改的Map视图。

clear() → void

删除List中的所有对象,并且List长度变成0。

contains(Object element) bool

返回true,如果集合中包含一个元素等于element

inherited
elementAt(int index) → E

通过索引返回元素。

inherited
every(bool f(E element)) bool

检查可迭代对象的每一个元素是否都满足test

inherited
expand(Iterable f(E element)) Iterable

Iterable的每个元素扩展为0个或多个元素。

inherited
fillRange(int start, int end, [E fillValue]) → void

设置start(包括)到end(不包括)范围的对象为fillValue

firstWhere(bool test(E element), {E orElse()}) → E

返回满足test断言的第一个元素。

inherited
fold(initialValue, dynamic combine(previousValue, E element)) → dynamic

通过迭代,将集合的所有元素与一个存在的值(initialValue)用提供的函数结合(combine), 将集合换算成单一的值,

inherited
forEach(void f(E element)) → void

对集合的每个元素,按迭代顺序应用f函数。

inherited
getRange(int start, int end) Iterable<E>

返回一个可迭代对象Iterable,对start(包括)到end(不包括)的对象进行迭代。

indexOf(E element, [int start = 0]) int

返回List中,第一个元素element的索引。

insert(int index, E element) → void

在List中的index位置插入对象。

insertAll(int index, Iterable<E> iterable) → void

在List中的index位置插入iterable的所有对象。

join([String separator = ""]) String

将每个元素转换成String并连接。

inherited
lastIndexOf(E element, [int start]) int

返回List中,最后一个元素element的索引。

lastWhere(bool test(E element), {E orElse()}) → E

返回满足test断言的最后一个元素。

inherited
map(dynamic f(E e)) Iterable

按迭代顺序,对Iterable的每个元素调用f,用返回值创建一个新的惰性Iterable

inherited
noSuchMethod(Invocation invocation) → dynamic

当一个不存在的函数或成员变量被访问时,该函数被调用。

inherited
reduce(E combine(E value, E element)) → E

通过迭代,用提供的函数结合(combine)集合的所有元素,将集合换算成单一的值,

inherited
remove(Object value) bool

删除List中第一次出现的value

removeAt(int index) → E

删除List中index索引处的对象。

removeLast() → E

删除(pop)并返回List的最后一个对象。

removeRange(int start, int end) → void

删除start(包括)到end(不包括)范围内的对象。

removeWhere(bool test(E element)) → void

删除List中所有满足test的对象。

replaceRange(int start, int end, Iterable<E> replacement) → void

删除start(包括)到end(不包括)范围内的对象, 并在它的位置插入replacement的内容。

retainWhere(bool test(E element)) → void

删除List中所有不满足test的对象。

setAll(int index, Iterable<E> iterable) → void

从List中的index索引处开始,用iterable的所有对象重写this的所有对象。

setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) → void

iterable中的所有元素(排除开始的skipCount个元素), 复制到List的start(包括) ... end(不包括)范围中。

shuffle([Random random]) → void

随机打乱List中的元素。

singleWhere(bool test(E element)) → E

返回满足test的单个元素。

inherited
skip(int count) Iterable<E>

返回一个惰性的可迭代对象,包含此对象除了最初的count个元素外的所有元素。

inherited
skipWhile(bool test(E value)) Iterable<E>

跳过最初的满足测试条件test的元素,返回Iterable

inherited
sort([int compare(E a, E b)]) → void

compare比较函数指定的顺序对List排序。

sublist(int start, [int end]) List<E>

返回一个新的List,包含从start(包括)到end(不包括)的对象。

take(int count) Iterable<E>

返回一个惰性的可迭代对象,包含有此对象最初的count个元素。

inherited
takeWhile(bool test(E value)) Iterable<E>

返回一个惰性的Iterable,包含最初的满足test的所有元素。

inherited
toList({bool growable: true}) List<E>

创建一个包含Iterable所有元素的List

inherited
toSet() Set<E>

创建一个与Iterable有相同元素的Set

inherited
toString() String

返回一个用来表示对象的字符串。

inherited
where(bool test(E element)) Iterable<E>

使用所有满足测试的元素,创建一个新的惰性Iterable

inherited