jdk8 stream peek 和 map 区别

区别:peek没有返回值,map有返回值

定义:

peek:

Stream<T> peek(Consumer<? super T> action);

 其中入参是 Consumer  -->      void accept(T t);

 

map:

<R> Stream<R> map(Function<? super T, ? extends R> mapper);

 其中入参:Function  -->   R apply(T t);

由此可见,他们的区别在于是否有返回值,

使用场景:

peek 处理无需返回值的情况,比如输出打印

       Stream.of("one", "two", "three","four").peek(u -> u.toUpperCase())
                .forEach(e -> System.out.print(e+"\t"));

结果

one	two	three	four

我们发现 stream中的元素并没有转成大写

 

map 处理

 Stream.of("one", "two", "three","four").map(u -> u.toUpperCase())
                .forEach(e -> System.out.print(e+"\t"));

结果:

ONE	TWO	THREE	FOUR

map 才真正对数据流进行了转换

当然如果传递的是一个对象也会改变,这也就是和我们方法一样
public void change(String str){

}

和 public String change(String str){

}

一样,Java中是值传递

public static void main(String[] args) {
    String str = new String("ab");
    change(str);
    System.out.println(str);
}
 
public static void change(String str) {
    str = "cd";
}

 

在进入到change方法的时候,首先 str=“ab” 也就是 指向1,然后修改str="cd",str指向2,当方法执行完后,str被销毁,

而main 方法的str 仍然指向 ab

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值