首页 > 解决方案 > Java POJO Setter 函数正在更新列表中所有索引的值

问题描述

我一直在编写一段代码,在验证特定列表中的值并基于一些内部应用程序检查后,使用循环更新列表值。然而,在第一次循环尝试期间的这个过程中,列表中所有索引的值都得到更新。下面是代码。有人可以帮助我为什么它在第一次迭代期间更新所有索引而不是仅在第一次迭代期间更新第一个索引?

public class Xlist {
    private String parm1;
    private String param2;

    public String getParam1() {
        return param1;
    }

    public void setParam1(String param1) {
        this.param1 = param1;
    }

    public String param2;
    }

    public Void setParam2(String param2) {
        this.param2 = param2;
    }
}

用法:

    Xlist xlist =[{1,Alpha},{2,Beta},{3,Gamma}],
    for(int i=0;i<xlist.size();i++){
        if(i==0){
            logger.info("Working on fixing the bug which is updating all the list values in single shot. Looking for values before first update");
            logger.info("Value at 1"+":"+xlist.get(0).getParam2());
            logger.info("Value at 2"+":"+xlist.get(1).getParam2());
            logger.info("Value at 3"+":"+xlist.get(2).getParam2());
        }
        xlist.get(i).setParam2("Hello"+String.valueof(xlist.get(i).getParam2()));
        if(i==0){
            logger.info("Working on fixing the bug which is updating all the list values in single shot. Looking for values after first update");
            logger.info("Value at 1"+":"+xlist.get(0).getParam2());
            logger.info("Value at 2"+":"+xlist.get(1).getParam2());
            logger.info("Value at 3"+":"+xlist.get(2).getParam2());
        }
    }

输出如下:

致力于修复单次更新所有列表值的错误。在第一次更新之前寻找值

Value at 1: Alpha
Value at 2: Beta
Value at 3: Gamma

致力于修复单次更新所有列表值的错误。第一次更新后寻找值

Value at 1: Hello Alpha
Value at 2: Hello Alpha
Value at 3: Hello Alpha

标签: java

解决方案


请看你的代码:

您正在执行此操作,并且在其中您正在执行更新 + 尝试打印所有 3 个值,但您只更新一次。

if (i==0) {

}

从所有地方摆脱 if (i==0){} 并更改您的打印语句和设置语句以使用 (i) 代替:

logger.info("Value at " + i +":"+xlist.get(i).getParam2());
               xlist.get(i).setParam2("Hello"+String.valueof(xlist.get(i).getParam2()));

     

推荐阅读