Функция установки Java POJO обновляет значение для всех индексов в списке

#java

#java

Вопрос:

Я писал фрагмент кода, в котором после проверки значений в определенном списке и на основе некоторых внутренних проверок приложения обновлял значение списка с помощью цикла. Однако в этом процессе во время первой попытки цикла обновляются значения для всех индексов в списке . Ниже приведен код. Не мог бы кто-нибудь, пожалуйста, помочь мне, почему он обновляется для всех индексов во время первой итерации, но не для первого индекса только во время первой итерации?

 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
  

Ответ №1:

Пожалуйста, посмотрите на свой код:

Вы делаете и внутри этого выполняете обновление пытаетесь напечатать все 3 значения, но обновляете только ОДИН РАЗ.

 if (i==0) {

}
  

Избавьтесь от if (i==0){} из всех мест и измените свои операторы print и set на use (i) вместо этого do:

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

     
  

Комментарии:

1. Текст с отступом в 4 пробела, пустые строки выше и ниже зададут стиль кода

2. извините, я постараюсь улучшить это 🙂

3. Извините, я думаю, что я не заставил вас понять мой вопрос. Я использую условие i==0 для печати проверки значений по всем индексам перед setParam2() и после setParam2() во время первой итерации. После setParam2 на первой итерации цикла все три значения обновляются с помощью xlist.get(i).setParam2(«Привет» String.valueof(xlist.get(i).getParam2()));

4. Я не понимаю ваших требований @V3nky. Вы пытаетесь обновить все сразу? Обновите свой вопрос до того, что именно вам нужно.

5. Обновил мой вопрос. Проблема заключается в том, что во время первой итерации цикла функция установки обновляет значения для индексов, но не только для первого индекса. Согласно логике xlist.get(i).setParam2(«Hello» String.valueof(xlist.get(i).getParam2())); , он должен обновить значение при передаче индекса, но он обновляет все значения индекса с индексов 0-2.