你可以重置for-each循环的计数器吗?

时间:2015-03-23 20:57:56

标签: java foreach

因为那里没有可访问的计数器或i可以重置为零。

有没有什么方法可以使用continuebreak来实现这一目标?

class CommandLine {
  public int[] sort(int array[]) {
     int temp;
     for (int i=0; i<array.length-1; i++) {//must have used for-each
            if (array[i] > array[i+1]){

                temp = array[i];
                array[i] = array[i+1];
                array[i+1] = temp;
                i=-1;

            }//if end
    }//for end

    return array;

  }//main end
}//class end

2 个答案:

答案 0 :(得分:2)

通常,没有办法这样做:用于“驱动”for-each循环的迭代器是隐藏的,因此您的代码无法访问它。

当然,您可以创建一个类似于集合的类,它保留对它创建的所有迭代器的引用,并允许您“在侧面”进行重置。但是,这有资格作为黑客,应该避免。

如果您需要一种方法将迭代位置重置回特定位置,请使用常规for循环。

答案 1 :(得分:1)

不,内部的每个循环都不使用任何计数器。因此,只需使用通常的循环:

for (int i = 0; i < myCollection.size(); i ++) {
    // do something
}

更多信息:Is there a way to access an iteration-counter in Java's for-each loop?