原创

利用Java中List.forEach减少代码量

示例

// 创建集合
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");

//lambda表达式
//1、正常遍历
list.forEach(item->System.out.print(item));
//结果:abcd

//2、条件遍历
list.forEach(item->{
 if("b".equals(item)) {
 System.out.print(item);
 }
});
//结果:b
foreach源码
package java.lang;
import java.util.Iterator;
import java.util.Objects;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.function.Consumer;

public interface Iterable<T> {
 default void forEach(Consumer<? super T> action) {
 Objects.requireNonNull(action);
 for (T t : this) {
 action.accept(t);
 }
 }

 default Spliterator<T> spliterator() {
 return Spliterators.spliteratorUnknownSize(iterator(), 0);
 }
}
可以看到:forEach()方法是Iterable<T>接口中的一个方法。Java容器中,所有的Collection的子类(List、Set)会实现Iteratable接口以实现forEach()功能。forEach()方法的参数是Consumer类型,它是Java8新增的一个消费型函数式接口,其中的accept(T t)方法代表了接受一个输入参数并且无返回的操作。
正文到此结束
Loading...