美文网首页
Stream map 与 peek

Stream map 与 peek

作者: 秋元_92a3 | 来源:发表于2021-12-02 14:42 被阅读0次

    他们的相同之处在于,都是遍历流中的每个元素
    不通的地方在于,map接受的参数是一个带返回值的函数,map的执行结果是将参数中函数的执行结果;
    而peek遍历流中每个元素,其遍历过程中对每个元素进行操作,但是其返回值仍然是流本身。

      @Test
      void peekTest () {
    //    peek 接收一个Consumer,而map接收一个Function。
    //    Consumer是没有返回值的,它只是对Stream中的元素进行某些操作,但是操作之后的数据并不返回到Stream中,所以Stream中的元素还是原来的元素。
    //    而Function是有返回值的,这意味着对于Stream的元素所有操作都会作为新的结果返回到Stream中
    //    换句话说,peek是一个有输入参数,无返回值的方法,方法的入参是不会发生变化的,但是入场的属性是语序发生改变的;这就是peek string不会发生变化,而peek object会发生变化的原因
        List<User> users = Stream.of(new User("Tom", 1), new User("Susan", 2), new User("Jack", 3)).collect(Collectors.toList());
        System.out.println("------map method-------");
        users.stream().map(u -> {
          u.setName(u.getName().toUpperCase(Locale.ROOT));
          return u.getName();
        }).collect(Collectors.toList()).forEach(System.out::println);
        System.out.println("------peek method-------");
        users.stream().peek(u -> u.setName(u.getName())).collect(Collectors.toList()).forEach(t -> System.out.println(t.getName()));
      }
    

    相关文章

      网友评论

          本文标题:Stream map 与 peek

          本文链接:https://www.haomeiwen.com/subject/xoiyxrtx.html