列表的抽象实现。
ListBase
可用作实现 List
接口的基类。
此类仅使用 length
和 operator[]
以及成员实现所有读取操作。它使用这些以及 add
、length=
和 operator[]
类来实现写入操作。使用此基类的类应该实现这五个操作。
注意:出于向后兼容性原因,有一个默认的 add
实现仅适用于具有可空元素类型的列表。对于具有非可空元素类型的列表,必须实现 add
方法。
注意:仅将四个 length
和 []
读取/写入操作转发到普通可增长 List(如通过 []
文本创建的)将给 ListBase
的 add
和 addAll
操作带来非常差的表现。这些操作通过为每个 add
操作增加列表的长度来实现,而重复增加可增长列表的长度效率低下。为了避免这种情况,请覆盖 'add' 和 'addAll' 以直接转发到可增长列表,或者如果可能,使用 "package:collection/collection.dart" 中的 DelegatingList
而不是 ListMixin
。
- 实现类型
-
- List<
E>
- List<
- 实现者
- 可用扩展
构造函数
- ListBase()
-
const
属性
- first ↔ E
- 第一个元素。getter/setter pairoverride
- hashCode → int
- 此对象的哈希码。no setterinherited
- isEmpty → bool
- 此集合是否没有元素。no setteroverride
- isNotEmpty → bool
- 此集合是否至少有一个元素。no setteroverride
-
迭代器 → 迭代器<
E> - 一个新的
迭代器
,允许迭代此可迭代
的元素。no setteroverride - last ↔ E
- 最后一个元素。getter/setter pairoverride
- length ↔ int
- 此列表中对象的数量。getter/setter 对继承
-
reversed → 可迭代<
E> - 以反向顺序排列此列表中对象的 可迭代。no setteroverride
- runtimeType → Type
- 对象运行时类型的表示。no setterinherited
- single → E
- 检查此可迭代是否只有一个元素,并返回该元素。no setteroverride
方法
-
add(
E element) → void - 将
value
添加到此列表的末尾,长度增加一个。覆盖 -
addAll(
可迭代< 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> f(E element)) → Iterable<T> - 将此 可迭代对象 的每个元素展开成零个或多个元素。覆盖
-
fillRange(
int start, int end, [E? fill]) → 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(
Object? 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(
Object? 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 f(E element)) → Iterable< T> - 通过
toElement
修改后的当前可迭代对象的元素。覆盖 -
noSuchMethod(
Invocation invocation) → dynamic - 当访问不存在的方法或属性时调用。继承
-
reduce(
E combine(E previousValue, E element)) → E - 通过迭代使用提供的函数组合集合的元素来将集合缩减到单个值。覆盖
-
remove(
Object? element) → 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> newContents) → 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> - 创建一个迭代器,提供除了前
count
个元素之外的所有元素。覆盖 -
skipWhile(
bool test(E element)) → Iterable< E> - 创建一个迭代器,在满足
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 element)) → Iterable< E> - 创建一个惰性可迭代对象,包含满足
test
的前导元素。覆盖 -
toList(
{bool growable = true}) → List< E> - 创建一个包含此 可迭代对象 元素的 列表。覆盖
-
toSet(
) → Set< E> - 创建一个包含与此可迭代对象相同元素的 集合。覆盖
-
toString(
) → String - 此对象的字符串表示形式。覆盖
-
where(
bool test(E element)) → Iterable< E> - 创建一个新的惰性 可迭代对象,包含满足谓词
test
的所有元素。覆盖 -
whereType<
T> () → Iterable< T> - 创建一个新的惰性 可迭代对象,包含具有类型
T
的所有元素。覆盖