所以我在java课程中查看我的一个示例,而不是使用常规的for循环,使用了增强的for循环。我一直试图将它改回常规循环但没有运气。我查看了类似的问题,但无法弄清楚。有人能指出我正确的方向。
int total = 0;
int i;
// loop through homeworks, add to total
for(Integer grade: this.homeworks){
total = total + grade;
}
答案 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循环对于程序来说永远不会更有效,但正如我所说,开发人员的效率通常更重要。