foreach循环适用情形列举:
序号
适用范围
1
数组
2
3
实现了Iterable接口的凑集类。
基本语法for (ElementType element : arrayOrCollection) {// 对element进行操作}
个中ElementType是数组或凑集中元素的类型,element是每次迭代时数组或凑集中确当前元素,arrayOrCollection是你要遍历的数组或凑集。
数组遍历例如:
int[] numbers = {1, 2, 3, 4, 5}; for (int number : numbers) { System.out.println(number); }
结果:
1
2
3
4
5
凑集遍历Foreach遍历凑集框架中的类(如List, Set等):
例如:
import java.util.ArrayList; import java.util.List; List<String> names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Charlie"); for (String name : names) { System.out.println(name); }
结果:
Alice
Bob
Charlie
把稳事变foreach缺陷
建议
只能遍历数组或实现了Iterable接口的凑集类。
对付普通的类,利用佛如循环或实现Iterable接口。
在遍历过程中不能修正凑集的大小(如添加或删除元素)。
须要修正凑集,应利用迭代器(Iterator)或其他的凑集操作办法。
循环内部无法直接获取到元素的索引。
须要索引,该当利用传统的for循环或者结合其他方法(如利用List的indexOf方法,但这常日效率不高)。
结合Lambda表达式在Java 8及往后的版本中,foreach循环还可以结合Lambda表达式和Stream API来实行更繁芜的凑集操作。
例如,利用Stream API过滤凑集中的元素:
List<String> names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Charlie"); List<String> filteredNames = names.stream() .filter(name -> name.startsWith("A")) .collect(Collectors.toList()); for (String name : filteredNames) { System.out.println(name); }
结果:
Alice