3、Default methods and java modules
1、Functions in java
方法和lambdas 作为一阶公民
特性总结
- method references
:: 双冒号 作为方法引用
- lambads: anonymous functions
- 如果方法比较晦涩,使用定义方法再引用方式,使用lambdas可以代表那些简单的方法
2、Streams
传统java 只使用单核cpu
如果想使用多核cpu 涉及到多线程,就会比较麻烦
java 8 封装 streams API
第一个是因为有很多patterns
- 设定规则过滤数据
- 抽取数据
- 聚集数据
第二个是因为流处理是并行化 将数据进行分区而不是对数据进行同步
类似于 fork-join
多个cpu 只处理数据一部分,然后最后汇总
流处理两种方式
1、顺序处理 sequential processing
List<Apple> list = inventory.stream().filter((Apple apple) -> apple.getWeight() > 120)
.collect(toList());
2、并行处理 parallel processing
List<Apple> list=inventory.parallelStream().filter((Apple apple) -> apple.getWeight() > 120)
.collect(toList());
chapter 7 详细讲解 parallel data processing
3、Default methods and java modules
chapter13 解决臭名昭著的 infamous diamond inheritance problem in c++
Optional<T> 解决空指针异常,
类型匹配