我一直在尝试处理流操作,并试图理解为什么下面不将每个整数转换为字符串。我对peek()的理解是,它充当中间操作符,如果后面跟着终端操作符,则将给定的操作应用于流。任何帮助都会很好!
List<Integer> testList = Arrays.asList(10, 11, 12, 13, 14, 15);
testList.stream().peek(x -> x.toString()).forEach(x -> System.out.println(x.getClass()));发布于 2020-08-09 21:35:29
peek对每个流元素执行操作,但不修改流。它通常用于在进行调试的某些操作之前或之后打印Stream的元素,例如stream.peek(System.out::println)。peek说,它:
返回一个由该流的元素组成的流,另外,在从结果流中消耗元素时,对每个元素执行提供的操作。
您正在寻找Stream#map,它在使用元素调用函数时将Stream的每个元素转换为函数的结果。根据文档,它:
返回一个流,该流由将给定函数应用于该流元素的结果组成。
发布于 2020-08-09 22:05:36
方法peek以使用者为参数,使用者只使用元素--它以值作为参数并返回一个空值,这意味着这里返回的值x -> x.toString()只是被JRE忽略了,也是为了调试而设置的peek,peek意味着外观,而不是触摸。你想用地图代替。
https://stackoverflow.com/questions/63331553
复制相似问题