JAVA Stream 流

本文详细介绍了Java Stream的概念,特点以及工作流程。主要内容包括流的创建、转换和计算结果,涵盖并行流、过滤、排序、映射、聚合等操作。此外,还讨论了Stream相对于传统循环迭代的优势及使用注意事项。
摘要由CSDN通过智能技术生成

引言:

Stream定义:

sequence of elements from source that supports aggregate operations.

sequence of elements:一个流对外提供一个接口,可以访问到一串特定的数据。流不存储元素,但是可以根据需要进行计算转化

source:数据来源,如数据结构,数组,文件等

aggregate operation:聚合操作,流支持像SQL操作或者其他函数式语言的操作,如filter、map、reduce、find、match、sorted等

 

Stream流特点:

pipelining:很多流操作也是返回一个流,如.filter() 

Internal Iteration:流操作进行迭代,用户感知不到循环遍历。

 

流的工作流程:

流的创建

流的转换:将流转换为其他流的中间操作,可包括多个步骤(惰性操作)

流的计算结果:该操作会强制执行之前的惰性操作,也就是说只有第三步启动,才会执行第二部的惰性操作,此步骤之后,流就不可用了

一切流操作都逃不出流的三大工作流程!一个流只能被使用一次

 

一、stream流的创建——产生一个流对象

1.Collection接口的stream方法

        Stream<String> as = new ArrayList<String>().stream();
        Stream<String> hs = new HashSet<String>().stream();
        //还有LinkedList,linkedSet,TreeSet,Vector等等

2.Arrays.stream可以将数组转化为Stream

        Stream<String> stream = Arrays.stream("a,b,c,d,e".split(","), 3, 5);
        //数组第3到第五个元素放到流中去

3.利用Stream类进行转化

        //of方法,直接将数组转化
        Stream<Integer> c1 = Stream.of(new Integer[5]);
        Stream<String> c2 = Stream.of("a,b,c".split(","));
        Stream<String> c3 = Stream.of("a", "b", "c");

        //产生一个空流
        Stream<Object> d1 = Stream.empty();

        //generate方法,接收一个lambda表达式
        Stream<String> e1 = Stream.generate(() -> "hello");
        Stream<Double> e2 = Stream.generate(Math::random);

        //iterate方法,接受一个种子,和一个lambda表达式
         Stream<BigInteger> iterate = Stream.iterate(BigInteger.ZERO, n -> n.add(BigInteger.ONE));

4.基本类型流

IntStream、LongStream、DoubleStream(只有这三种)

        IntStream s1 = IntStream.of(1, 2, 3, 4, 5);
        s1 = Arrays.stream(new int[]{1,2,3});
        s1 = IntStream.generate(() -> (int) (Math.random() * 100));
        s1=IntStream.range(1,5);//1,2,3,4
        s1=IntStream.rangeClosed(1,5);//1,2,3,4,5
        IntStream s2 = IntStream.of(1, 2, 3, 4, 5);
        Stream<Integer> s3 = s2.boxed();//转换为对象流
        IntStream s4 = s3.mapToInt(Integer::intValue);//转换为IntStream

5

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pixie:)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值