将其转换为常规for循环

时间:2015-10-24 19:44:24

标签: java loops for-loop foreach

我有这段代码,想要将它从每个循环转换为常规循环

for(Coordinate neighbors : getNeighbors(current)){
    if(!previous.containsKey(neighbors)){
         previous.put(neighbors, current);
         list.add(neighbors);
    }
}

对不好的规格表示抱歉。 getNeighbors返回一组坐标

2 个答案:

答案 0 :(得分:2)

在不知道getNeighbors(current)返回什么类型的情况下很难给出最佳答案,但是你总是可以使用显式迭代器创建一个for循环:

for(Iterator<Coordinate> iter = getNeighbors(current).iterator(); iter.hasNext();){
    Coordinates neighbors = iter.next();
    if(!previous.containsKey(neighbors)){
        previous.put(neighbors, current);
        list.add(neighbors);
    }
}

答案 1 :(得分:1)

如果没有合理解释你正在做什么,我无法提供比这更好的答案,但它给出了图片。

如果是数组

for(int i=0; i<getNeighbors(current).length; i++){
    if(!previous.containsKey(getNeighbors(current)[i])){
        previous.put(getNeighbors(current)[i], current);
        list.add(getNeighbors(current)[i]);
    }
}

如果是ArrayList

for(int i=0; i<getNeighbors(current).size(); i++){
    if(!previous.containsKey(getNeighbors(current).get(i))){
        previous.put(getNeighbors(current).get(i), current);
        list.add(getNeighbors(current).get());
    }
}