Stream流编程

一.Stream流编程—概念

  • 流水线思想:流水线起始部分输入数据,在尾端得到结果,在期间进行处理操作

  • 外部迭代和内部迭代

    • 外部迭代:使用for/while循环迭代

      int [] nums = {
             1,2,3};
      int sum=0;
      for(int i:nums) {
             
          sum+=i;
      }
      System.out.println("结果为:"+sum);
      
    • 内部迭代:不需要关心如何循环的操作

      int [] nums = {
             1,2,3};
      int sum2 = IntStream.of(nums).sum();
      System.out.println("结果为:"+sum);
      
  • 中间操作、终止操作和惰性求值

    • 如下实例就是中间操作(返回流的操作),sum是终止操作[即看方法返回的类型,如果返回Stream则是中间操作,如果返回其他则是终止操作]

      int sum2 = IntStream.of(nums).map(i->i*2).sum();
      
    • 惰性求值就是终止(终止操作)没有调用的情况下,中间操作不会执行,实例代码如下

      //定义一个静态方法
      public static int doubleNum(int i) {
             
          System.out.println("执行了乘2操作");
          return i*2;
      }
      
      //如下是在main方法中调用的内容
      //map参数使用静态引入的方式
      int sum2 = IntStream.of(nums).map(StreamDemo::doubleNum).sum();//输出多次执行了乘2操作,并执行*2操作
      System.out.println("结果为":sum2);//正常输出
      System.out.println("————————————————");//正常输出
      IntStream.of(nums).map(StreamDemo::doubleNum);//此时由于没有调用终止操作,故不会调用静态引入方法doubleNum,即不会输出:执行了乘2操作
      

二.Stream流编程—创建

1.Stream流创建方式
相关方法
集合 Collection.stream / parallelStream
数组 Arrays.stream
数字Stream IntStream / LongStream.range/rangeClosed / Random.ints/longs /doubles
自己创建 Stream.generate / iterate
2.流创建实例代码
List<String>list = new ArrayList<>();
//从集合创建
list.stream();
list.parallelStream();

//从数组创建
Arrays.stream(new int[]{
   2,3,5});

//创建数字流
IntStream.of(1,2,3);//创建指定流
IntStream.rangeClosed(1,10);//通过range创建流边界

//使用random创建一个无线流,故需要结合limit()定义流的终止点
new Random().ints().limit(10);

//自己创建使用Stream.generate()方法参数是Supplier
Random random = new Random();
Stream.generate(()->random.nextInt()).limit(20);//只生成20个值

三.Stream流编程—中间操作

中间操作的特点在于返回Stream类型

1.Stream流中间操作方式
相关方法
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值