将数据存储在一维List中,然后将add()存储到二维List中。在add()之后,.clear()是一维列表。但是,由于List引用了地址,clear()丢失了地址,因此2D数组变成了空List。 清除后仍在二维列表中?
List
add()
.clear()
clear()
List<int> num = [1, 2, 3]; List<List<int> num2 = []; num2.add(num); num.clear();
bnl4lu3b1#
您可以使用List.from()来执行shallow copy
List.from()
shallow copy
List<int> num = [1, 2, 3]; List<List<int>> num2 = []; num2.add(List.from(num)); print(num2); //[[1, 2, 3]] num.clear(); print(num2); //[[1, 2, 3]]
hvvq6cgz2#
在toList()方法中使用技巧
toList()
void main() { List<int> num1 = [1, 2, 3]; List<List<int>> num2 = [[0,2]] ; num2.add(num1.toList()); num1.clear(); print(num2); // [[0, 2], [1, 2, 3]] print(num1); // [] }
ldfqzlk83#
您应该将列表添加为匿名列表
List<int> num = [1, 2, 3]; List<List<int>> num2 = []; // add as anonymous list num2.add(num.toList()); num.clear(); print(num2.length); // 1 print(num.length); // 0 for (var element in num2) { print(element.length); // 3 }
3条答案
按热度按时间bnl4lu3b1#
您可以使用
List.from()
来执行shallow copy
hvvq6cgz2#
在
toList()
方法中使用技巧ldfqzlk83#
您应该将列表添加为匿名列表