如何使用迭代器返回ArrayList中的第一个结果

时间:2014-12-05 00:41:20

标签: java arraylist iterator

我正在研究机器人迷宫,机器人在没有撞到墙壁的情况下找到目标。作为一种“回溯”方法,我需要机器人朝着与第一次遇到交叉点时相反的方向前进。这是我的代码:

2 个答案:

答案 0 :(得分:1)

这应该有效。我认为您可能忘记在执行初始Junction currentJunction = junctionIterator.next();后继续遍历列表,因此您从未真正浏览过列表。另外,如果有空列表,您可能希望在使用hasNext()之前始终检查next()

public int searchJunction(IRobot robot) {

    boolean foundJunction = false;

    Junction currentJunction = null;

    //Iterate through list until the end, or until correct junction is found.
    while (!foundJunction && junctionIterator.hasNext()) {
        currentJunction = junctionIterator.next();
        if ((((currentJunction.x)==(robot.getLocation().x))) && ((currentJunction.y)==(robot.getLocation().y))) {
            foundJunction = true;
        }
    }

    return currentJunction;
}

希望这可以解决问题。

答案 1 :(得分:0)

在while循环内你遇到麻烦似乎没有进入最后一个路口......这是设计的吗?或者应该是

    while (junctionIterator.hasNext()) {
    if ((((currentJunction.x)==(robot.getLocation().x))) && ((currentJunction.y)==(robot.getLocation().y))) 
        break;
    currentJunction = junctionIterator.next();
}

让我知道这是否有帮助,或者我误解了你的问题