一般情况下我们循环List 用for循环或者foreach的时候都是需要判断下集合是否是null和size是否大于0的。
那么lambda遍历List 需不需要判空呢?
代码:
import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class Test { public static void main(String[] args) { List<User> users = null; users.forEach(user0->{ if(user0.getAge()==2){ user0.setName("皇上"); } }); System.out.println(users); } }
结果:
显而易见,当集合为空的时候,遍历也是会报错的!
源码:
default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } }
public static <T> T requireNonNull(T obj) { if (obj == null) throw new NullPointerException(); return obj; }
可以看到 requireNonNull 方法,如果集合为null,直接抛出异常了。
结论:
在使用lambda表达式遍历集合时,还是需要判空下的哈~