Получение предыдущих и следующих элементов коллекции для известного - PullRequest
0 голосов
/ 28 апреля 2020

Как получить следующий и предыдущий предмет коллекции для известного предмета?

Объект "stage" известен, вам нужно получить предыдущий и следующий за ним объект, если он есть

Я пытался сделать это, но это не удалось (

Iterator<Stage> it = project.getProjectStages().iterator();
    for (Stage stage1:
         project.getProjectStages()) {
        while (it.hasNext()) {
            if (stage1.getStageId() == stage.getStageId()) {
                nextStage = it.next();
                previousStage = nextStage;
            }
        }
    }

1 Ответ

2 голосов
/ 28 апреля 2020

Ваш лог c к сожалению довольно сломан. У вас есть next оператор внутри if, поэтому вы рискуете бесконечным l oop. Итерация находится внутри другой итерации, рискуя многократным использованием одного и того же итератора.

Я подозреваю, что вы хотите что-то вроде:

while (iter.hasNext()) {
    current = iter.next();
    if (current.getStageId() == target) {
         if (iter.hasNext())
             following = iter.next();
         break;
    }
    previous = current;
}
...