Java5 后增加了 foreach 特性, 本质也是 Java 语法糖. 使用 foreach 可以实现快速遍历元素, 有以下两种情况
- 实现
Iterable
接口的类, 例如List
接口的实现类ArrayList
- 数组遍历
java.lang.Iterable
这里以 java.lang.Iterable
接口实现类 ArrayList
举例
/**
* forEach 用于实现 Iterator 接口的类
*/
@Test
public void testIterableForEach() {
List<String> list = new ArrayList<>();
// 集合类 forEach 本质上是调用 iterator 接口
// 反编译可以看到
// 先声明 list.iterator()
// 然后 while iterator.hasNext()
// iterator.next() 获取到元素
for (String str : list) {
System.out.println(str);
}
}
反编译 class 文件, 发现其实是利用了 Iterator
的 api 实现元素遍历
数组
/**
* ArrayForEach
* forEach 遍历数组
*/
@Test
public void testArrayForEach() {
int[] arr = {1, 2, 3, 4, 5};
// 数组使用 forEach 本质上是 fori
for (int i : arr) {
System.out.println(i);
}
}
反编译 class 文件, 发现其实是普通的 fori
遍历