Java进阶教程:Streams API

Java进阶教程:Streams API

Stream是啥

  首先明确一点,Stream流和IO包里的InputStream、OutputStream是完全不同的概念!它是Java 8 中引入的新特性,Stream可以对集合元素进行各种高效、便利的聚合操作!

  聚合是个什么东东呢?

聚合在信息科学中是指对有关的数据进行内容挑选、分析、归类,最后分析得到人们想要的结果,主要是指任何能够从数组产生标量值的数据转换过程 [1]  。近年来随着大数据的发展,聚合技术已经广泛地应用于文本分析,信息安全,网络传输等领域。——《百度百科》

  到这里其实我们就理解了,Stream可以对集合中的元素进行筛选,返回我们想要的特定数据

不是迭代器

  Stream是筛选,既然是筛选,也就是说单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。这个很类似我们迭代器!而和迭代器又不同的是,Stream 可以并行化操作,迭代器只能命令式地、串行化操作。顾名思义,当使用串行方式去遍历时,每个 item 读完后再读下一个 item。而使用并行去遍历时,数据会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出

Stream的构成

  当我们使用一个流的时候,通常包括三个基本步骤:

  → 获取一个数据源(source)

    → 数据转换

      →执行操作获取想要的结果

  每次转换原有 Stream 对象不改变,返回一个新的 Stream 对象(可以有多次转换),这就允许对其操作可以像链条一样排列,变成一个管道。就像下图这样

    

创建一个流

  导包的时候一定要注意 import java.util.stream.Stream; 接着,数组和集合都可以构造流!

        String[] arr = new String[]{"a","b","c","d"};
        List<String> list = new ArrayList<>(Arrays.asList(arr));

        //构造流
        Stream stream = Stream.of(list);
        Stream stream1 = Arrays.stream(arr);
        Stream stream2 = list.stream();

        //数值流的构造
        IntStream.of(1,2,3).forEach(System.out::println);
        IntStream.range(1,3).forEach(System.out::println);

  

未完待续

猜你喜欢

转载自www.cnblogs.com/MrSaver/p/12209149.html