非原创,知识总结性文章
package com.taotao.springboot;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
public class IterableForEachExample {
public static void main(String[] args) {
List<Integer> ints = new ArrayList<>();
for (int i = 0; i < 10; i++) ints.add(i);
//迭代器遍历
Iterator<Integer> iterator = ints.iterator();
while (iterator.hasNext()) {
Integer i = iterator.next();
System.out.println("Iterator Value::" + i);
}
//使用forEach方法遍历,这里使用了匿名内部类
ints.forEach(new Consumer<Integer>() {
public void accept(Integer t) {
System.out.println("forEach anonymous class Value::" + t);
}
});
//通过实现Consumer接口的子类遍历,业务处理从遍历逻辑中抽取出来
MyConsumer action = new MyConsumer();
ints.forEach(action);
}
}
//实现Conumer接口
class MyConsumer implements Consumer<Integer> {
public void accept(Integer t) {
System.out.println("Consumer impl Value::" + t);
}
}
通过上面这个例子,看出使用 forEach()方法代码行数会增加,但是它将遍历逻辑与业务处理逻辑分离,有助于我们将关注点放在业务逻辑的处理上