441stream流中的常用方法_forEach和442Stream流中的常用方法_filter
常用方法forEach
流模型的操作很丰富,这里介绍一些常用的APl。这些方法可以被分成两种:
延迟方法︰返回值类型仍然是Stream接口自身类型的方法,因此支持链式调用。(除了终结方法外,其余方法均为延迟方法。)
终结方法︰返回值类型不再是Stream接口自身类型的方法,因此不再支持类似stringBuilder那样的链式调用。本小节中,终结方法包括`|count和 forEach方法。
备注:本小节之外的更多方法,请自行参考API文档。
逐一处理一:forEach
虽然方法名字叫forEach,但是于for循环中的”for-each“昵称不同
/*
stream流中的常用方法_forEach
void forEach(Consumer< ? super T> action ) ;
该方法接收一个consumer接口函数,会将每一个流元素交给该函数进行处理。l
简单记:
forEach方法,用来遍历流中的数据
是一个终结方法,遍历之后就不能继续调用Stream流中的其他方法
*/
public static void main(String[] args) {
//获取一个Stream流
Stream<String> stream = Stream.of("杰瑞", "汤姆", "泰非", "派克", "橘猫");
//使用Stream流中的方法forEach对Stream流中的数据进行遍历
stream.forEach(name->System.out.println(name));
}
}
常用方法Filter
可以通过filter方法将一个流转换成另一个子集流。方法签名
stream<T> filter(Predicate<? super T> predicate);
当前我们已经学习过java.util.stream.Predicate函数式接口,其中唯一的抽象方法;
Boolean test(T t);
该方法将会产生一个boolean值结果,代表指定的条件是否满足。如果结果为true,那么Stream流的filter方法将会留用元素;如果结果为false,那么filter方法将会舍弃元素。
public static void main(String[] args) {
//创建一个stream
Stream<String> stream = Stream.of("杰瑞", "汤姆", "杰瑞大表舅", "杰瑞舅老爷","泰非");
//对Stream流中的元素进行过滤只要姓杰的
Stream<String>stream1=stream.filter((String name)->{return name.startsWith("杰");});
//遍历stream1流
stream1.forEach(name-> System.out.println(name));
}
}