Flutter中如何将一个完整列表添加到另一个列表顶部
Dart 列表指定位置批量插入实现方案
你需要的将列表A整体插入列表B顶部的需求,不需要创建第三个中转列表,也不需要手写循环,Dart 内置的insertAll方法可以直接实现你要的addAllAt效果。
方法用法
insertAll是List类自带的实例方法,签名为:
void insertAll(int index, Iterable<E> iterable)
作用是在指定的索引位置,批量插入传入的可迭代集合的所有元素,只会修改当前调用方法的列表,不会改动作为参数传入的集合本身。
要实现把listA插到listB顶部,只需要在索引0的位置调用该方法即可:
listA = [1, 2, 3]; listB = [4, 5, 6]; listB.insertAll(0, listA); // 运行结果 // listA: [1, 2, 3] 原列表完整保留,可在其他视图独立使用 // listB: [1, 2, 3, 4, 5, 6] 直接得到A拼接B的目标结果
方案对比
- 你之前使用的默认
addAll方法,本质等价于listB.insertAll(listB.length, listA),固定把元素追加到列表尾部,所以会得到[4,5,6,1,2,3]的反向拼接结果。 - 新建第三个列表listC中转的方案,会产生两次额外的全量列表拷贝,还会生成临时对象等待GC回收,性能远低于直接调用
insertAll的方案。 - 不需要引入第三方库,不需要手写遍历插入逻辑,代码简洁度和运行效率都是最优的。
注意:该方法仅适用于可增长长度的列表,如果你使用的是List.filled生成的固定长度列表,调用任何增减元素的方法都会抛出异常,这种场景下只能通过生成新列表的方式完成拼接。日常业务开发中通过[]字面量创建的列表默认都是可增长列表,可以直接使用该方法。
内容的提问来源于stack exchange,提问作者Maritn Ge
相关产品推荐
相关产品推荐

