//Map接口的定义 <R> Stream<R> map(Function<? super T, ? extends R> mapper); //forEach接口的定义 void forEach(Consumer<? super T> action);
通过接口定义可以看出,两者最明显的区别就是map有返回值,forEach没有返回值
所以在具体调用时,map调用时可以return一个对象到外部,如下:
List<String> list= Arrays.asList("1","2","3"); Optional.ofNullable(list).get().stream().map(info->{ if (Objects.nonNull(info)){ return info; }else{ return "空"; } }).forEach(info->{ System.out.println(info); });