![](/img/trans.png)
[英]When copying the values from one Arraylist to another, all values get set as the last value entered in the first Arraylist
[英]ArrayList issues: One Value Resetting all values
我有一个包含ArrayList
的ArrayLists
( ArrayList<ArrayList<Element>>
)的应用程序。 基本上,每个元素都是用户可以与之交互的项目。 每次与元素进行交互时,该元素都会更新,然后将整个容器对象重新保存到文件系统中。 一种元素类型(扩展元素)是EBoolean
,它可以包含元素标题,true或false值以及其他几个常规参数。 调用updateBoolean
方法时, updateBoolean
选项卡,ID和布尔值传递给它。 该方法扫描正确的元素(匹配ID)并更新其值。 但是,我得到一些奇怪的行为,修改一个元素会修改整个数组中的每个元素。
这是带有输出的代码:
public void updateBoolean(int index, int ID, boolean b) {
// Data that is gonna be saved
System.out.println("Statistics: Index: "+index+" Array # "+elements.size()+" Elements in array #: "+elements.get(index).size());
for (int i = 1; i < elements.size(); i++) {
System.out.println("TAB " + i + " Title: " + elements.get(i).get(0).getTitle() + "Boolean value: " + ((EBoolean) elements.get(i).get(0)).getValue());
}
for (int j = 0; j < elements.get(index).size(); j++) {
if (elements.get(index).get(j).getID() == ID) {
EBoolean ent = (EBoolean) elements.get(index).get(0);
ent.setValue(b);
ent.setModified(true);
elements.get(index).set(j, ent);
System.out.println("Updated booleans, here's what we have now: ");
for (int i = 1; i < elements.size(); i++) {
System.out.println("TAB " + i + " Title: " + elements.get(i).get(0).getTitle() + "Boolean value: " + ((EBoolean) elements.get(i).get(0)).getValue());
}
return;
}
}
}
输出:
04-02 16:01:05.441 15442-15442/? I/System.out: Statistics: Index: 4 Array # 13 Elements in array #: 4
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 1 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 2 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 3 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 4 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 5 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 6 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 7 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 8 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 9 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 10 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 11 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 12 Title: BooleanBoolean value: false
04-02 16:01:05.441 15442-15442/? I/System.out: Updated booleans, here's what we have now:
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 1 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 2 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 3 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 4 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 5 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 6 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 7 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 8 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 9 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 10 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 11 Title: BooleanBoolean value: true
04-02 16:01:05.441 15442-15442/? I/System.out: TAB 12 Title: BooleanBoolean value: true
将新实例添加到阵列时未创建。 确保ArrayList<ArrayList<Element>>
每个对象都是其自己的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.