我正在使用带有pair()的mutableListOf,但我不明白它的工作方式和原因。
var x = mutableListOf<Pair<String, ArrayList<Long>>>()
val y= ArrayList<Long>()
val testNumber : Long = 5
y.add(testNumber )
x.add(Pair("testString",testNumber))
Log.i(TAG, "$x") //--> x = [testString,[5]]
y.clear()
Log.i(TAG, "$x") // --> x = [testString,[]] so my testNumber value is empty
最佳答案
首先,您输入的代码不应编译,因为代码对接受ArrayList并且您放置了很长时间。
现在考虑一下这是一个错字,在代码中您输入y而不是在x中的对中输入testNumber,您已经在对中添加了对Arraylist的引用。 y和您的参考对指向相同对象的相同存储位置。因此,当您清除y时,该内存位置的数据将被清除。而且由于您的配对还指向了已被清除的同一存储位置,因此您得到了空数据。就像用官方名称和昵称呼唤一个人都指向同一个人一样。
解决方案应该是在将y添加到对中之前将其复制并添加到该对中。
尝试
x.add(Pair("testString",ArrayList(y))
或者您可以手动创建y的deepCopy,然后在x中输入