深入理解Java
从初步认识Java到Java的深入理解,Java菜鸟向Java高材生的成长笔记
行云间
z大厦大法师打发斯蒂芬
展开
-
Java 8系列之Stream中万能的reduce
reduce 操作可以实现从Stream中生成一个值,其生成的值不是随意的,而是根据指定的计算模型。比如,之前提到count、min和max方 法,因为常用而被纳入标准库中。事实上,这些方法都是reduce操作。reduce方法有三个override的方法:Optional<T> reduce(BinaryOperator<T> accumulator);T reduce(T identity原创 2017-02-10 16:22:17 · 86961 阅读 · 11 评论 -
Java 8系列之重构和定制收集器
前面我们已经了解到了Collector类库中各种收集器的强大,可是,它们也只是能满足常用的场景。既然开放了Collector接口,我们当然可以根据自已意愿去定制,实际操作起来还是比较简单的。Collectors.joining源码解析从前面,我们已经了解到一个Collector是由四部分组成的:Supplier<A> supplier(): 创建新的结果结BiConsumer<A, T> acc原创 2017-02-10 16:14:07 · 8875 阅读 · 3 评论 -
Java 8系列之Stream的强大工具Collector
概述前面我们使用过collect(toList()),在流中生成列表。实际开发过程中,List又是我们经常用到的数据结构,但是有时候我们也希望Stream能够转换生成其他的值,比如Map或者set,甚至希望定制生成想要的数据结构。collect也就是收集器,是Stream一种通用的、从流生成复杂值的结构。只要将它传给collect方法,也就是所谓的转换方法,其就会生成想要的数据结构。这里不得不提下,原创 2017-02-10 16:18:15 · 59459 阅读 · 7 评论 -
Java 8系列之Stream的基本语法详解
概述继Java 8系列之Lambda表达式之后,我们来了解Stream。Stream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找、遍历、过滤以及常见计算等。聚合操作为了学习聚合的使用,在这里,先定义一个数据类:public class Student { int no原创 2017-02-10 16:27:52 · 78138 阅读 · 31 评论 -
Java 8系列之Lambda表达式
概述使用Lambda表达式也有一段时间了,有时候用的云里雾里的,是该深入学习Java 8新特性的时候了。作为Java最大改变之一的Lambda表达式,其是Stream的基础,那就以它开始吧。这里,我们先明确需要解决的问题:什么是闭包?Lambda表达式如何写?什么是函数接口?类型推断在Lambda中的体现。Lambda表达式lambda表达式的语法由参数列表、->和函数体组成。函数体既可以原创 2017-01-12 17:41:52 · 10919 阅读 · 6 评论