在此示例中,您将学习如何使用for-each循环来迭代通用集合。for-eachJava实际上没有关键字或语句。它只是for循环的一种特殊语法。for-each循环的结构或语法如下。
for (type var : collections) {
body;
}这种形式的for循环总是读为foreach,冒号(:)字符读为“ in”。根据该定义,如果类型为String,则您将阅读上面的语法为“集合中的foreach String var”。上面的语句中的var将在迭代过程中被赋予集合中的每个值。
让我们比较两个代码,第一个使用通用代码,另一个不使用通用代码,以便在使用集合时从迭代的角度看到差异。
package org.nhooo.example.generics;
import java.util.ArrayList;
import java.util.List;
public class ForEachGeneric {
public void loopWithoutGeneric() {
List customers = new ArrayList();
customers.add(new Customer());
customers.add(new Customer());
customers.add(new Customer());
for (int i = 0; i < customers.size(); i++) {
Customer customer = (Customer) customers.get(i);
System.out.println(customer.getFirstName());
}
}
public void loopWithGeneric() {
List<Customer> customers = new ArrayList<>();
customers.add(new Customer());
customers.add(new Customer());
customers.add(new Customer());
for (Customer customer : customers) {
System.out.println(customer.getFirstName());
}
}
}从上面的代码片段中可以看到,当我们使用集合的通用版本时,我们的代码要干净得多。在第一种方法中,loopWithoutGeneric我们必须手动将对象强制转换回Customer类型。但是在第二种方法中,该loopWithGeneric方法不需要强制转换,因为集合将返回与声明要保留的集合相同的类型。