Stream流的特点_只能使用一次与Stream流中的常用方法_map
Stream流的特点_只能使用一次
Stream流属于管道流,只能被消费(使用)一次
第一个Stream流调用完毕方法,数据就会流转到下一个Stream上
而这时第一个Stream流已经使用完毕,就会关闭了
所以第一个Stream流就不能再调用方法了
IllegalStateException: stream has already been operated upon or closed
(IllegalStateException:流已经被操作或关闭)
当瓶子走到下一个步骤的时候后面的流就会关闭
所以Stream流只能使用一次
Stream流中的常用方法_map
map:可以叫映射或者转换
如果需要将流中的元素映射到另一个流中,可以使用map方法
<R> Stream<R> map(Function<? super T,? extends R> mapper);
该接口需要一个Function函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流
复制Function接口
此前我们已经学习过java.util.stream.Function函数式接口,其中唯一的抽象方法为︰ Function中的抽象方法:
R apply(T t);
这可以将一种T类型转换成R类型,而这种的动作,就称为映射
map方法的基本使用
package day01.Demo01_Day016; import java.util.stream.Stream; /* 如果需要将流中的元素映射到另一个流中,可以使用map方法 <R> Stream<R> map(Function<? super T,? extends R> mapper); 1 该接口需要一个Function函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流 Function中的抽象方法: R apply(T t); */ public class Demo04Stream_map { public static void main(String[] args) { //获取一个String类型的Stream流 Stream<String> stream = Stream.of("1", "2", "3", "4", "5"); //使用map方法,把字符串类型的整数,转换(映射)为Integer类型的整数 Stream<Integer> stream1 = stream.map(s -> Integer.parseInt(s)); //遍历stream1流 stream1.forEach(i-> System.out.println(i)); } }
这段代码中,map方法的参数通过方法引用,将字符串类型转换成为了int类型(并自动装箱为Integer类对象)。