流stream 使用了数据视图,让你可以在比集合更高的概念上指定操作
使用流,你只需要将操作的调度留给实现,例如,假设你要计算某个属性的平均值,你只需要
指定数据源和属性,然后流类库会优化计算,比如使用多线程来求和,计数,合并结果
1.迭代器使用了一种明确的遍历策略,同时也阻止了高效的并发执行.
2.你可以从集合,数组,生成器和迭代器创建流
3.使用filter来选择元素,使用map元素转换
4.对于转换刘的其他操作,limit,distinct,sorted
5.从stream中获得结果使用归约操作
6.Optional 类型是作为处理Null值而提供的一个安全替代者
7.Collectors类的groupingBy方法和partitioningBy方法允许你把stream分组来求解
8.并行流自动将流操作并行化

8.1从迭代到stream操作
当你处理集合的时候通常会迭代所有元素并且对每一个元素进行处理,使用流操作可以提高效率并行处理,遵循“做什么”而不限制怎样做,提供了诚信优化提高效率的机会
流表面上看起来和集合相似,然而:
1.流不存储元素,他们存储在底层的集合或者按需求生成
2.流操作不改变他们的源数据
3.如果可能的话,stream操作是延时执行的,也就是说直到需要结果的时候,方法才会执行,如果你要找到前五个长单词,那么stream会在找到第五个之后自动停止执行,所以你可以拥有一个无穷流!
//读取字符串
String contents = new String(Files.readAllBytes(Paths.get("alice.txt")),StandardCharsets.UTF_8);
List<String> words = Arrays.asList(contents.split("\PL+"));
//
long count = words.parallelStream().filter(w -> w.length() > 12).count());

8.2创建stream
集合->利用collection接口的stream方法
数组->利用静态方法Stream.of

可以创建空流
Stream<String> ec = Stream.empty();

可以创建生成器函数
Stream<String> silence = Stream.generate(Math::random);
可以创建序列
Stream<BigInterger> integers = Stream.iterate(BigInterger.ZERO,n -> n.add(BigInteger.ONE));

8.3
filter 检查删除流元素
map 作用于每一个流中的元素

8.4
提取子流和组合流
limit(n) 返回包含n个元素的新流
skip(n) 丢弃前n个元素

简单规约:如何从流数据中获得答案
count方法
max
anyMatch 如果有满足条件返回true
min
Optional 类型是一种更好的表明缺少返回值的方式(和auto 差不多?)

Core java for impatient 笔记 ch8 流的更多相关文章

  1. Core java for impatient 笔记

    类比c++来学习! 1.在java 中变量不持有对象,变量持有的是对象的引用,可以把变量看做c++中的只能指针,自动管理内存 需要手动初始化(否则就是空指针!) 2.final 相当于c++中的con ...

  2. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  3. Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  4. java 学习笔记之 流、文件的操作

    ava 学习笔记之 流.文件的操作 对于一些基础的知识,这里不再过多的解释, 简单的文件查询过滤操作 package com.wfu.ch08; import java.io.File; import ...

  5. Android(java)学习笔记110:Java中操作文件的类介绍(File + IO流)

    1.File类:对硬盘上的文件和目录进行操作的类.    File类是文件和目录路径名抽象表现形式  构造函数:        1) File(String pathname)       Creat ...

  6. Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档

    今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本 ...

  7. Core Java读书笔记之String

    Java里面的String Conceptually, Java Strings are sequences of Unicode characters. Java里面的String都是Unicode ...

  8. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  9. 20145213《Java程序设计学习笔记》第六周学习总结

    20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...

随机推荐

  1. git push代码时的'git did not exit cleanly (exit code 1)'问题解决

    在利用git管理本地发布的galleryLeftOrRight插件项目时,按照git的使用方法:先commit→master,再 push,发现提示错误git did not exit cleanly ...

  2. mysql解压缩方式安装和彻底删除

    一.安装mysql (1)将下载下来的mysql压缩文件解压缩到需要安装mysql的目录中 (2)打开解压后的文件夹,复制default.ini文件并重命名为my.ini,此文件的相关配置为: (3) ...

  3. elasticsearch.yml 配置说明

    cluster.name: 指定node所属的cluster. node.name: 本机的hostname. node.master: 是否可以被选举为master节点.(true or false ...

  4. 迅为八核cortex a53开发板android/linux/Ubuntu系统

    详情请点击了解:http://www.topeetobard.com 店铺:https://arm-board.taobao.com 核心板: 提供1G和2G内存版本,全机器焊接,杜绝手工,批量无忧. ...

  5. MySQL ORDER BY IF() 条件排序

    源 在做sqlzoo的时候,碰到一个SQL的排序问题,他把符合条件的单独几行,可以放在查询结果的开始,或者查询结果的尾部 通过的方法就是IN语句(也可以通过IF语句) 自己做了个测试,如下,这个是表的 ...

  6. winpcap编程设置过滤器之指定获取某个网站的数据

    下面,我将以 乱世隋唐页游 为例,通过编码获取这里面的数据. 游戏图: 我是乱世隋唐的网址是:www.917st.com 这个是官网网址的服务器地址.  42.62.0.14 我玩的游戏服是84区.网 ...

  7. js模拟支付宝发送短信验证码&&&&短信倒计时

    html <div class="pwdContent"> <div class="pwdBox"></div> <d ...

  8. 面试之Redis

    面:缓存中间件--Memcached和Redis的区别是什么? 答:Memcached的优点是简单易用,代码层次类似与Hash.支持简单数据类型,但不支持数据持久化存储,也不支持主从同步,也不支持分片 ...

  9. source collection list

    1.Anaconda:http://www.cnblogs.com/xiaoming123abc/p/6970890.html https://conda.io/docs/help-support.h ...

  10. Python 函数对象-函数嵌套-名称空间与作用域-闭包函数

    今日内容: 1. 函数对象 函数是第一类对象: 指的是函数名指向的值可以被当中数据去使用 1.可以被引用 2.可以当做参数传给另一个函数 3.可以当做一个函数的返回值 4.可以当做容器类型的元素 2. ...