随笔分类 -  JDK8学习笔记

摘要:1. Lambda表达式 基本使用 2.Optional 基本使用 3.Stream 创建Stream 最终构建的是一个 ReferencePipeline.Head 对象 后接 0个 或 多个 中间操作 (下面以map方法为例,其他方法的逻辑大部分与之相似) 构造 1个 StatelessOp 对 阅读全文
posted @ 2019-11-03 02:40 飞蛇在水 阅读(199) 评论(0) 推荐(0)
摘要:PipelineHelper 文档说明 用于执行流管道的辅助类 用于在一个地方捕获所有关于流管道的信息(输出种类、中间操作、流标识、并行 等) PipelineHelper 描述了一个流管道的初始分块,包括它的源、中间操作 和可能额外附加的关于终止(或有状态)操作的信息,该操作跟进上一个由当前 Pi 阅读全文
posted @ 2019-11-03 01:03 飞蛇在水 阅读(405) 评论(0) 推荐(0)
摘要:TerminalOP 说明文档 一个在流管道中的操作,它会接收一个流作为输入,并且生成一个结果或产生副作用 一个 TerminalOp 拥有一个输入类型和流模型和结果类型 一个 TerminalOp 还拥有一组操作标识,用于描述操作如何处理流中的元素 例如:短路、以指定顺序执行 一个 Termina 阅读全文
posted @ 2019-11-02 15:59 飞蛇在水 阅读(481) 评论(0) 推荐(0)
摘要:中间操作 map() 返回一个流,当中包含了将给定函数应用到当前流中的每一个元素后返回的结果。 只有一种实现,在 ReferencePipeline 中定义 创建一个 StatelessOp(ReferencePipeline 的内部类),重写 opWrapSink(定义在 AbstractPipe 阅读全文
posted @ 2019-09-17 23:27 飞蛇在水 阅读(301) 评论(0) 推荐(0)
摘要:说明文档 Consumer 的扩展,用于在流管道的各个阶段处理值,并且提供了额外的方法去管理大小信息、控制流程等 在首次调用 Sink 的 accept() 方法之前,必须首先调用 begin() 方法去通知其数据即将过来(视情况还会通知 Sink 有多少数据即将过来),在所有数据发送过来后,必须调 阅读全文
posted @ 2019-09-17 23:24 飞蛇在水 阅读(1593) 评论(0) 推荐(0)
摘要:用于描述中间管道阶段或者管道源阶段的抽象基类。 继承 AbstractPipeline,实现 Stream AbstractPipeline 继承 PipelineHelper,实现 BaseStream 文档说明 管道类的抽象父类,是 Stream 接口及其原生特化的核心实现。它会管理流管道的构建 阅读全文
posted @ 2019-09-16 23:36 飞蛇在水 阅读(1904) 评论(0) 推荐(0)
摘要:文档说明 一个用于对一个源当中的元素进行遍历和分区的对象 一个 Spliterator 涵盖的源中的元素可以是数组、Collection、IO通道、生成器函数 一个 Spliterator 可以一个一个地遍历元素(tryAdvance()),也可以顺序地分块遍历(forEachRemaining() 阅读全文
posted @ 2019-09-15 11:33 飞蛇在水 阅读(819) 评论(0) 推荐(0)
摘要:spliterator() 文档说明 创建一个 分割迭代器 (方法定义在 Iterable 接口) 实现类需要记录 spliterator 报告的 characteristic 值 但当 spliterator 报告了 size 或当前集合容器中无元素时,这个 characteristic值则无需报 阅读全文
posted @ 2019-09-15 11:19 飞蛇在水 阅读(1798) 评论(0) 推荐(0)
摘要:Collection 接口中的 default 方法 通过 spliterator() 创建一个分割迭代器(Spliterator),里面存放有对数据源的引用 调用 StreamSupport 的 stram 方法创建流 StreamSupport 文档说明 提供底层的辅助方法,用于创建与操纵流 这 阅读全文
posted @ 2019-09-14 22:30 飞蛇在水 阅读(722) 评论(0) 推荐(0)
摘要:继承关系 继承 BaseStream<T, Stream<T>>,BaseStream 继承 AutoCloseable 文档说明 流是一个元素的序列,支持串行与并行的聚合操作 除了对象引用流的 Stream,还有一些原生特化的版本:IntStream、LongStream、DoubleStream 阅读全文
posted @ 2019-09-14 22:18 飞蛇在水 阅读(246) 评论(0) 推荐(0)
摘要:在JDK1.8,Collection 接口新增了 stream 方法,用于构建 Stream 对象,从而进行一系列对集合的操作。 stream 是一个元素的序列,它支持串行与并行的聚合操作; stream 本身不存储值,它通过管道(AbstractPipeline)的方式获取值; stream 本质 阅读全文
posted @ 2019-09-14 15:50 飞蛇在水 阅读(733) 评论(0) 推荐(0)
摘要:Optional 主要解决的问题: NullPointerException 文档说明 Option 是一个容器对象,可能包含,也可能不包含一个非null的值 它是一个基于值的对象 被 final 修饰,不可变(允许包含指向可变对象的引用); 有 equals、hashCode、toString 方 阅读全文
posted @ 2019-09-14 02:22 飞蛇在水 阅读(309) 评论(0) 推荐(0)
摘要:JDK1.8 中添加了 Lambda表达式,为 Java 添加了确实的函数式编程特性。 Lambda 表达式的类型是函数。但在 Java 中,Lambda 表达式是对像,他们必须依附于一类特别的对象类型——函数式接口。 Lambda 表达式最大的特点是:表示做什么,而非如何做。 函数式接口 举个例子 阅读全文
posted @ 2019-09-13 12:03 飞蛇在水 阅读(228) 评论(0) 推荐(0)
摘要:关于函数式接口的传参方式,目前了解到的就只有两种(还有的话后续继续添加): 以 Consumer 与 IntConsumer 为例,先定义两个接口的实例对象: 注:Consumer 与 IntConsumer 之间不存在继承关系,IntConsumer 只是 Consumer 的一个原生特化版本! 阅读全文
posted @ 2019-08-12 23:27 飞蛇在水 阅读(1817) 评论(0) 推荐(0)