1. fori和foreach
fori和foreach可以通过break/continue/return来中止遍历,或执行下一次遍历。
2. objects.stream().foreach()
objects.stream().foreach(x->{});
可以使用return来实现continue的效果,也就是说如果你在一个方法的Lambda表达式中使用return时,这个方法是不会返回的,而只是执行下一次遍历。
int x = 5;
List<String> list = Arrays.asList("123", "45634", "7892", "abch", "sdfhrthj", "mvkd");
list.stream().forEach(e -> {
if (e.length() >= x) {
return;
}
System.out.println(e);
});
使用stream,最大的特点是并发执行,对于循环内业务量比较多的场景非常适合,比如数据库查询,第三方接口接口调用等耗时的操作。
我咋记得是parallestream是有并行的效果呢。
3. objects.foreach()
objects.foreach(x->{});
对于一些list使用foreach()方法,也是需要通过return来跳过当前循环,这里return相当于continue
list.forEach(e -> {
if (e.length() >= x) {
return;
}
System.out.println(e);
});
接口list继承Collection,接口Collection继承了接口Iterable,forEach方法是Iterable中的方法:
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
其中default是Java8中引入的,接口如今可以包含实现类没有提供实现的方法签名了!那谁来实现它呢?缺失的方法主体随接口提供了(因此就有了默认实现),而不是由实现类提供。
参考: