增强了循环

时间:2013-12-07 03:16:49

标签: java foreach

所以我在java课程中查看我的一个示例,而不是使用常规的for循环,使用了增强的for循环。我一直试图将它改回常规循环但没有运气。我查看了类似的问题,但无法弄清楚。有人能指出我正确的方向。

int total = 0;
int i;

// loop through homeworks, add to total
for(Integer grade: this.homeworks){         
  total = total + grade;
}

2 个答案:

答案 0 :(得分:0)

Java中增强的for循环只是常规for循环的缩写,2之间没有性能差异。

您可以使用以下几种不同的变体:

    List<Integer> homework = new ArrayList<>();
    homework.add(new Integer(6));
    homework.add(new Integer(7));
    homework.add(new Integer(8));
    homework.add(new Integer(9));

    for (Integer integer : homework) {
        System.out.println(integer);
    }

    for (Iterator<Integer> it = homework.iterator(); it.hasNext();) {
        Integer integer = it.next();
        System.out.println(integer);

    }

    for (int i = 0; i < homework.size(); i++) {
        Integer integer = homework.get(i);
        System.out.println(integer);

    }

答案 1 :(得分:0)

  

我读到增强的for循环比循环的正常效率高。

实际上有时它对程序的效率较低,但大部分时间都完全相同。

对开发人员来说效率更高,这通常更为重要

for-each循环在迭代集合时特别有用。

List<String> list = 
for(Iterator<String> iter = list.iterator(); list.hasNext(); ) {
    String s = list.next();
   ------
 }

更容易编写为(但是同样的东西,所以它对程序来说效率不高)

   List<String> list = 
    for(String s: list) {
      ---
}

使用索引访问随机访问的集合时,使用“旧”循环会稍微提高效率。

List<String> list = new ArrayList<String>(); // implements RandomAccess
for(int i=0, len = list.size(); i < len; i++) // doesn't use an Iterator!

在集合上使用for-each循环总是使用Iterator,对随机访问列表的效率稍差。

使用for-each循环对于程序来说永远不会更有效,但正如我所说,开发人员的效率通常更重要