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;
});
}
就简单性而言,还有更好的方法吗?而在效率方面呢?
答案 0 :(得分:2)
如果它是一个可增长的列表,你不介意改变它:
oldList.length = newLength;
return oldList;
如果您需要新列表:
return <T>[]
..length = newLength
..setRange(0, min(newLength, oldList.length), oldList);
(从min
导入dart:math
)
有很多方法。任何只复制一次元素的东西都是好的。