代码之家  ›  专栏  ›  技术社区  ›  Marcelo Glasberg

在DART中更改列表大小的最佳方法是什么?

  •  1
  • Marcelo Glasberg  · 技术社区  · 7 年前
    • 我有一张单子 oldLength 项目。
    • 我想要它 newLength 项目。
    • 如果 newLength < oldLength 我只想把多余的东西剪下来。
    • 如果 newLength > oldLength ,我想用空值填充它。

    我写的:

    List<T> cutList<T>(List<T> oldList, int newLength) {
        return new List.generate(newLength, (index) {
          if (index < oldList.length) return oldList[index];
          else return null;
       });
    }
    

    在简单性方面,有更好的方法吗?在效率方面呢?

    1 回复  |  直到 7 年前
        1
  •  2
  •   lrn    7 年前

    如果这是一个可增长的列表,你不介意改变它:

    oldList.length = newLength;
    return oldList;
    

    如果需要新列表:

    return <T>[]
      ..length = newLength
      ..setRange(0, min(newLength, oldList.length), oldList);
    

    (何处) min 从导入 dart:math ) 有很多种方法。任何只复制每个元素一次的东西都是好的。