【问题标题】:Convert this to a regular for loop将此转换为常规 for 循环
【发布时间】:2015-10-24 19:44:24
【问题描述】:

我有这段代码,想把它从一个 for each 循环变成一个常规的 for 循环

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

抱歉,规格不好。 getNeighbors 返回一组坐标

【问题讨论】:

  • 你为什么要这样做?
  • 这无法回答,因为我们不知道getNeighbors(current) 的类型是什么。
  • 如果getNeighbours 返回Set<Coordinate>,那么Eran 的答案会起作用,但我不知道你为什么不喜欢for each 循环。

标签: java loops for-loop foreach


【解决方案1】:

在不知道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);
    }
}

【讨论】:

  • 谢谢。 Current 是 Coordinate 类型,由两个整数组成 GetNeighbors 返回一个集合
【解决方案2】:

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

如果是数组

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]);
    }
}

如果是数组列表

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());
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2020-06-28
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多