Flutter 如何仅复制列表的数据,而不复制引用
我正在尝试在Dart中创建int列表的列表,但遇到了一些问题Flutter 如何仅复制列表的数据,而不复制引用,flutter,dart,Flutter,Dart,我正在尝试在Dart中创建int列表的列表,但遇到了一些问题 如果创建了一个int listin=[1,2,3]列表并将其添加到主列表(int列表列表)中,则添加成功。 [[1,2,3]] 现在,如果我清除listinlistin.clear()并添加新值listin=[3,2,1],然后再将其添加到主列表中;它会被添加,但也会覆盖上一个。 [[3,2,1],[3,2,1]] 我想要的是[[1,2,3],[3,2,1]] 代码如下 List<int> listInt = Li
List<int> listInt = List();
List<List<int>> mainListInt = List();
listInt.add(1);
listInt.add(2);
listInt.add(3);
mainListInt.add(listInt);
print(mainListInt);
listInt.clear();
print(mainListInt);
listInt.add(3);
listInt.add(2);
listInt.add(1);
mainListInt.add(listInt);
print(mainListInt);
我发现了一个解决方案,但不象它,它是使用List.generate()来表示列表中列表的特定编号
List<List<int>> mainListInt = List.generate(2, (i) => []);
mainListInt[0].add(1);
mainListInt[0].add(2);
mainListInt[0].add(3);
print(mainListInt);
mainListInt[1].add(3);
mainListInt[1].add(2);
mainListInt[1].add(1);
print(mainListInt);
我发现了一个解决方案,但不象它,它是使用List.generate()来表示列表中列表的特定编号
List<List<int>> mainListInt = List.generate(2, (i) => []);
mainListInt[0].add(1);
mainListInt[0].add(2);
mainListInt[0].add(3);
print(mainListInt);
mainListInt[1].add(3);
mainListInt[1].add(2);
mainListInt[1].add(1);
print(mainListInt);
您需要确保不将子列表的引用保存到主列表中,因为这将按照您的注意对子列表进行编辑。
您可以使用创建新实例(它将创建列表的副本,这是一个不同的引用):
mainListInt.add(List.of(listInt));
您需要确保不将子列表的引用保存到主列表中,因为这将按照您的注意对子列表进行编辑。您可以使用创建新实例(它将创建列表的副本,这是一个不同的引用):
mainListInt.add(List.of(listInt));
您可以使用listInt.toList()
创建列表的副本
void main(List<String> args) {
List<int> listInt = List();
List<List<int>> mainListInt = List();
listInt.add(1);
listInt.add(2);
listInt.add(3);
mainListInt.add(listInt.toList());
print(mainListInt);
listInt.clear();
print(mainListInt);
listInt.add(3);
listInt.add(2);
listInt.add(1);
mainListInt.add(listInt.toList());
print(mainListInt);
}
void main(列表参数){
List listInt=List();
List mainListInt=List();
添加(1);
添加(2);
添加(3);
mainListInt.add(listin.toList());
打印(mainListInt);
listInt.clear();
打印(mainListInt);
添加(3);
添加(2);
添加(1);
mainListInt.add(listin.toList());
打印(mainListInt);
}
您可以使用listInt.toList()
创建列表的副本
void main(List<String> args) {
List<int> listInt = List();
List<List<int>> mainListInt = List();
listInt.add(1);
listInt.add(2);
listInt.add(3);
mainListInt.add(listInt.toList());
print(mainListInt);
listInt.clear();
print(mainListInt);
listInt.add(3);
listInt.add(2);
listInt.add(1);
mainListInt.add(listInt.toList());
print(mainListInt);
}
void main(列表参数){
List listInt=List();
List mainListInt=List();
添加(1);
添加(2);
添加(3);
mainListInt.add(listin.toList());
打印(mainListInt);
listInt.clear();
打印(mainListInt);
添加(3);
添加(2);
添加(1);
mainListInt.add(listin.toList());
打印(mainListInt);
}
这是到列表的快捷方式。从
。这是一个独立的方法。当然,任何算法都有一个实现,在哪个地方实现并不重要。你是在暗示这种方法太过了吗?我不确定你在算法部分想说什么,但对这个问题没有。您可以查看-它使用列表。从。是的。。。你没有回答我的问题你是在暗示这个方法是过分的吗?
即使算法是在`List.from()`中实现的,但不是直接在这个方法中实现的。使用Iterable.toList()
有什么不对?这是从到列表的快捷方式。这是一个独立的方法。当然,任何算法都有一个实现,在哪个地方实现并不重要。你是在暗示这种方法太过了吗?我不确定你在算法部分想说什么,但对这个问题没有。您可以查看-它使用列表。从。是的。。。你没有回答我的问题你是在暗示这个方法是过分的吗?
即使算法是在`List.from()`中实现的,但不是直接在这个方法中实现的。使用Iterable.toList()
有什么不对?
ListDestination = List.from(ListOrigin);