我需要遍历一个数组并改变它的对象,但我仍然需要引用原始数组,所以我需要原始数组的副本来改变它的对象,然后在操作完成后,我想把原始数组改变成(复制的)改变后的数组。大小和对象将是相同的,但它们的值将改变。
非常感谢您的时间和帮助提前。
**我的问题是:**当我复制原始数组时,副本和原始数组都引用内存中的相同位置,因此对象的状态发生更改,我的代码无法正确完成其任务。如何复制数组,使副本引用内存中的其他位置,但对象相同?
简单的var copyArray = originalArray
显然不起作用。我在网上彻底搜索了一下,在Kotlin中找不到我问题的确切答案。
1条答案
按热度按时间64jmpszr1#
**选项1:**由于您的对象只有一个级别的属性,因此浅层副本与深层副本一样有效。如果它有多个级别,您仍然可以使用copy()方法,但必须显式指定如何复制每个特定属性。
完整代码:
结果是:
**选项2:**您可以序列化和还原序列化对象。
将以下依赖项添加到build.gradle:
在单元格类中创建一个deepCopy函数:
和代码进行测试:
输出量:
此外,由于您有一个2D数组:
结果是: