首页 > 解决方案 > 获取已知集合的上一个和下一个元素

问题描述

如何获取已知项目的下一个和上一个集合项目?

“舞台”对象是已知的,如果有的话,你需要获取它的上一个和下一个

我试图这样做,但它失败了(

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

标签: javacollectionsiteratorjava-stream

解决方案


不幸的是,你的逻辑很糟糕。你有一个next里面的语句,if所以你冒着无限循环的风险。并且迭代在另一个迭代中,冒着多次使用同一个迭代器的风险。

我怀疑你想要类似的东西:

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

推荐阅读