Java8 新特性与Stream
Java8 新特性与Stream
Ziegler Han
造轮子十年,感悟:尽量不要造轮子。
展开
-
Java 8 实战 脑图
原创 2020-07-01 16:03:14 · 234 阅读 · 0 评论 -
Future.get抛出TimeoutException,并不会中断或者取消任务
static ExecutorService executorService = Executors.newCachedThreadPool(); /** * get 出现TimeoutException,并不会中断或者取消运算线程 * @throws InterruptedException */ @Test void testGetTimeoutException() throws InterruptedException { f.原创 2020-06-29 18:00:51 · 2068 阅读 · 1 评论 -
第11章 CompletableFuture组合式异步编程
第11章 CompletableFuture组合式异步编程概念:分支/合并框架 并行流 混聚(mash-up)区别:并发 并行11.1 Future接口java5引入,设计初衷:对将来某个时刻会发生的结果进行建模。使用Futrue:将操作封装到Callable对象中 提交给ExecutorService ExecutorService.submit返回Future对象11.1.1 Future接口的局限性11.1.2 使用CompletableFuture构建异步原创 2020-05-28 14:52:34 · 237 阅读 · 0 评论 -
第10章 用Optional取代null
第10章 用Optional取代null10.1.1 采用防御式检查减少NullPointerException深层次递归的if语句块 过多的退出语句10.1.2 null带来的种种问题10.1.3 其他语言的替代品Groovy 安全导航操作符(Safe Navigation Operator) Haskell 的 Maybe Scala 的 Option[T]10.2 Optional入门DIFFnull Optional.empty()10.3 应用Optional原创 2020-05-27 17:56:33 · 207 阅读 · 0 评论 -
第7章 并行数据处理与性能
第7章 并行数据处理与性能7.1 并行流steam.sequential() steam.parallel()最后一次调用会影响整个流水线。上面两个函数只是修改并行标志。配置并行流使用的线程池ForkJoinPoolRuntime.getRuntime().availableProcessors()System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", 12);7.1.4 高效使用原创 2020-05-22 20:25:37 · 475 阅读 · 0 评论 -
第6章 用流收集数据
第6章 用流收集数据6.1 收集器简介你只需指出希望的结果 —— “做什么”,而不用操心执行的步骤 —— “如何做”6.1.1 收集器用做高级规约对流调用collect方法将对流中的元素触发一个规约操作。6.1.2 预定义收集器注意:Colletors实用类将流元素规约和汇总为一个值。 元素分组 元素分区6.2 规约和汇总import static java.util.stream.Collectors.*;Collectors.counting stream原创 2020-05-19 14:49:17 · 247 阅读 · 0 评论 -
第5章 使用流
第5章 使用流5.1 筛选和切片filter distinct limit skip5.2 映射map flatmap [重要]:让你把一个流中的每个值都换成一个流,然后把所有的流连接起来成为一个流。[P90] peek:This method exists mainly to support debugging, where you want to see the elements as they flow past a certain point in a pipeline5.原创 2020-05-15 10:06:05 · 197 阅读 · 0 评论 -
orElse与orElseGet的对比,使用的情景不同
这两个函数的字面区别相比大家都比较熟悉没有必要介绍,其他很多文档都介绍了。当返回值不存在的时候,两个函数却别不大。但是不存在的时候是有一定区别的。就是orElseGet方法不会执行,因为他使用的Supplier函数接口。既然orElseGet有这个有点是不是可以全部使用orElseGet替换orElse呢?不是的。当值是函数或者需要计算时建议使用orElseGet,当...原创 2020-04-28 15:56:19 · 2381 阅读 · 0 评论 -
map 和 flatMap 区别
map & flatMap这两个函数经常被使用。它们有如下区别:map把数组流中的每一个值,使用所提供的函数执行一遍,一一对应。得到元素个数相同的数组流。flatMapflat是扁平的意思。它把数组流中的每一个值,使用所提供的函数执行一遍,一一对应。得到元素相同的数组流。只不过,里面的元素也是一个子数组流。把这些子数组合并成一个数组以后,元素个数大概率会和原数组流的...转载 2020-03-26 14:16:12 · 1117 阅读 · 0 评论