gpt4 book ai didi

java - ArrayList,在一个 ArrayList 上设置值会更改另一个 ArrayList 上的值

转载 作者:行者123 更新时间:2023-12-01 07:39:04 35 4
gpt4 key购买 nike

正如标题所示,我有两个 ArrayList。奇怪的是,在一个数组列表上设置一个值会改变另一个数组列表的值。

一些信息:这些是 Entry 类型的 ArrayList,每个列表都包含一个金额和一个值(这就是您在括号中看到的内容)。我正在尝试转动这个数组:[(5,2)(2,5)(3,2)]

进入这些[(1,2)]和[(4,2)(2,5)(3,2)]。在本例中,i == 1,remainingAmt == 1。

ArrayList<Entry> firstHalf = new ArrayList<Entry>();
ArrayList<Entry> secondHalf = new ArrayList<Entry>();

for(int j = 0; j<=i;j++){
firstHalf.add(rleAL.get(j));
}
for(int k = i; k<rleAL.size(); k++){
secondHalf.add(rleAL.get(k));
}
System.out.println(firstHalf);//gives (5,2)
firstHalf.get(i).setAmount(remainingAmt);
System.out.println(firstHalf);//gives (1,2) *CORRECT*
secondHalf.get(0).setAmount(rleAL.get(i).getAmount() - remainingAmt);
System.out.println(firstHalf);//gives (0,2) *WRONG*

最佳答案

这没什么不寻常的——如果底层对象在列表之间共享,一个对象的更改将反射(reflect)在另一个对象中。如果需要独立的列表,则需要通过从头开始创建新对象或将初始对象复制到列表 #2 中的新对象来使用每个列表中的不同对象。

关于java - ArrayList,在一个 ArrayList 上设置值会更改另一个 ArrayList 上的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7787531/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com