繁体   English   中英

ArrayList问题:一个值重置所有值

[英]ArrayList issues: One Value Resetting all values

我有一个包含ArrayListArrayListsArrayList<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM