亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android mutableListof(pair(k,v) --> 如果我清除變量

Android mutableListof(pair(k,v) --> 如果我清除變量

LEATH 2023-11-01 21:18:43
我將 mutableListOf 與pair() 一起使用,但我不明白它是如何工作的以及為什么工作。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
查看完整描述

1 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

首先,您輸入的代碼不應編譯,因為pair接受ArrayList并且您輸入了long?,F在考慮這是一個拼寫錯誤,并且在您的代碼中,您在 x 的對中輸入了 y 而不是 testNumber,您已經在對中添加了對 Arraylist 的引用。并且 y 和您對中的引用指向同一內存位置的同一對象。因此,當您清除 y 時,該內存位置的數據將被清除。而且由于您的對也指向已被清除的相同內存位置,因此您得到了空數據。這就像用他的正式姓名和昵稱來稱呼一個人一樣,因為兩者都指向同一個人。


解決方案應該是在將 y 添加到對之前先復制 y 并將該副本添加到該對中。嘗試


x.add(Pair("testString",ArrayList(y))

或者您可以手動對 y 進行深層復制,然后將其輸入到 x 中


查看完整回答
反對 回復 2023-11-01
  • 1 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號