Java教程

Java8 Stream(一):Stream概述特点

本文主要是介绍Java8 Stream(一):Stream概述特点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、概述

​ Stream流是 Java8 API 新增的一个处理集合的关键抽象概念,是一个来自数据源的元素队列并支持聚合操作。

​ Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。

​ Stream API 提供了一种高效且易于使用的处理数据的方式。

​ Stream将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。

​ 元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结果。

二、特点

  1. Stream不存储数据
    Stream不是集合元素,它不是数据结构并不存储数据,它按照特定的规则对数据进行计算,它更像一个高级版本的Iterator。原始版本的Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作。
    高级版本的Stream,用户只要给出需要对其包含的元素执行什么操作,比如:筛选出年龄小于20的人、获取人的身份证号等,Stream会隐式地在内部进行遍历,做出相应的数据转换。Stream就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。

    而和迭代器又不同的是,Stream可以并行化操作,迭代器只能命令式地、串行化操作。顾名思义,当使用串行方式去遍历时,每个item读完后再读下一个item。**而使用并行去遍历时,数据会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。**Stream的并行操作依赖于Java7中引入的Fork/Join框架(JSR166y)来拆分任务和加速处理过程。

  2. Stream不会改变数据源

    ​ Stream不会修改原来的数据源,它会产生一个新的集合或值。

  3. Stream是惰性求值的(延迟执行)

    ​ Stream是惰性求值的(延迟执行),在中间处理的过程中,只对操作进行记录,并不会立即执行,只有等到执行终止操作的时候才会进行实际的计算,这时候中间操作才会执行。

这篇关于Java8 Stream(一):Stream概述特点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!