Внесение изменений определенного элемента ArrayList

есть массив:

public static ArrayList<StatisticInfo> listStatic = new ArrayList<>();

который заполняется данными имени сессии, времени старта и окончания из двух методов, и уровень вложенности со значением 0, далее идет метод:

private static void findParent() {
    listStatic.get(0).setLevel(1);

    for (int i = 1; i < listStatic.size()-1; i++) {
        int idLevel = listStatic.get(i-1).level;
        long endPrevTime = listStatic.get(i-1).endTime;
        long startCurrentTime = listStatic.get(i).startTime;
        long startNextTime = listStatic.get(i+1).startTime;
        String previousName = listStatic.get(i-1).sectionName;
        String currentName = listStatic.get(i).sectionName;

        if (!(previousName.equals(currentName)) && startCurrentTime < endPrevTime){
            listStatic.get(i).setLevel(idLevel+1);
        } else if (previousName.equals(currentName) && startCurrentTime == endPrevTime){
            listStatic.get(i).setLevel(idLevel);
        } else if (!(previousName.equals(currentName)) && startCurrentTime == endPrevTime && startCurrentTime < startNextTime && listStatic.get(i).level == 0){
            listStatic.get(i).setLevel(idLevel);
        }
    }
}

в котором надо через сравнение имён и времени старта/окончания определить уровень вложенности и изменить нулевое значение в ArrayList на рассчитанное. Внутри метода расчет происходит, если вывести результаты в консоль из метода, то также верно отображается, а вот если ввести в консоль ArrayList, то в нем нет изменений. Что не так?

пробовал через метод:

listStatic.set();

но никак не смог понять, как изменить не всю строку по индексу, а только определенное значение.

В методе main ArrayList вывожу так:

for (StatisticInfo statisticInfo : listStatic) {
    System.out.println(statisticInfo);
}
System.out.println();

в консоли получаю следующее:

StatisticInfo{sectionName=session-1, fullTime=0, selfTime=0, count=1, startTime=1582803526932, endTime=1582803527856, duration=924, level=1}
StatisticInfo{sectionName=session-2, fullTime=0, selfTime=0, count=1, startTime=1582803526964, endTime=1582803527071, duration=107, level=2}
и т.д...

содержимое файла StatisticInfo:

public String sectionName;
public int fullTime;
public int selfTime;
public int count = 1;

public long startTime = 0;
public long endTime;
public long duration;
public int level = 0;

public StatisticInfo(String name) {
    this.sectionName = name;
}   
public String getSectionName() {
    return sectionName;
}    
public int getCount() {
    return count;
}    
public void setStartTime(long startTime) {
    this.startTime = startTime;
}
public long getStartTime() {
    return startTime;
}
public void setEndTime(long endTime) {
    this.endTime = endTime;
    setDuration(getEndTime() - getStartTime());
}
public long getEndTime() {
    return endTime;
}
public void setDuration(long duration) {
    this.duration = duration;
}
public long getDuration() {
    return duration;
}    
public int getLevel() {
    return level;
}
public void setLevel(int level) {
    this.level = level;
}

UPD: разобрался. выше описанный метод передал далее:

for (StatisticInfo info : findParent()) {

и все заработало как мне надо.


Ответы (0 шт):