zoukankan      html  css  js  c++  java
  • Stream知识点总结及源码阅读

    上次【http://www.cnblogs.com/webor2006/p/7795596.html】对Stream进行了简单的学习,这次继续学习Stream,还是结合java8 in action这本书来进行学习。

    在书中作者用一个简短的一句话来概括什么是Stream,如下:

    而这句话中描述了三个概念:

    那结合咱们的代码来进一步阐述下上面的三个概念:

    另外Stream操作还有如下两个特点:

    而对于用Stream来实现对菜进行过滤的这个代码用图例来表达其操作过程:

    另外书中还用一个形象的图来对比Streams和Collections的区别:

    另外还有一个图也是用来描述这两者之间的差别滴,再来感受下:

    有木有感受到Stream的好处呢,反正目前还不是特别有感觉,希望随着它的深入学习会有比较深刻的印象吧。

    另外需要注意的是:

    这时咱们来试验一下:

    这个毫无疑问肯定是能输出滴:

    但是如果再用同一个流再去遍历一次就会抛异常了:

    所以说它的操作是一次性的。

    下面来看一下Stream operations的概念,其实它是有两种类型的:

    下面做一个实验,在每个Intermediate Operations中加一句打印,来看一下输出:

    在运行之前先猜测一下输出结果,是先将filtering打印完之后再打印map么?下面看结果:

    居然是filter之后立马就map了,跟咱们的预期是不一样的,所以对于这些Intermediate Operations需要注意。

    在Stream源码中有很多Intermediate Operations,这里粗略看一下:

    这么多方法哪些是Intermediate Operations,哪些又是terminal operations呢?其实=对于这方法在源码中是有对其Operations类型进行注释说明的,比如说:

    所以说也不用去记,另外之后会慢慢去学习Stream类中提供强大的API滴,目前先有个大概的了解~

  • 相关阅读:
    webpy使用笔记(一)
    如何衡量离散程度
    Hash哈希(二)一致性Hash(C++实现)
    Hash哈希(一)
    sqlmap使用笔记
    Windows7 IIS7.5 HTTP Error 503 The service is unavailable 另类解决方案
    [转]IP动态切换脚本
    全国各地电信DNS服务器地址
    比较好的汉字拼音化类
    c#读取INI文件类
  • 原文地址:https://www.cnblogs.com/webor2006/p/7887244.html
Copyright © 2011-2022 走看看