【发布时间】:2011-10-16 21:42:21
【问题描述】:
正如标题所说,我有两个 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*
【问题讨论】: