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

时间:2018-05-26 22:47:32

标签: list dart

  • 我有一个包含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 个答案:

答案 0 :(得分:2)

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

oldList.length = newLength;
return oldList;

如果您需要新列表:

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

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