
《Java8实战》- 读书笔记
文章平均质量分 92
读书笔记,便于查阅。
笑虾
一壶泪,暗淡醇香味。
化作万樽与谁对?
忧举杯,乐举杯,地老天荒只一醉。
欲哭时,男儿无泪,千般相思苦。
杯中汇……
展开
-
《Java8实战》读书笔记15:附录中描述的其他新特性
本附录中,讨论Java 8中其他的三个语言特性的更新,分别是重复注解(repeated annotation)、类型注解(type annotation)和通用目标类型推断(generalized target-type inference)。 在两个方面对注解机制进行了改进: A.1.2 类型注解 从开始,能应用于。包括:new操作符、类型转换、instanceof 检查、泛型类型参数,以及 implements 和 throws 子句。 字段 上加的是 的 ,然后再用 自动生成的效果: 顺便提一原创 2022-07-08 17:17:02 · 319 阅读 · 0 评论 -
《Java8实战》读书笔记14:第 16 章 结论以及Java的未来
传递一个Lambda表达式,即一段精简的代码片段,比如 传递一个方法引用,该方法引用指向了一个现有的方法,比如这样的代码: 与全新的 相结合,新一代 。 这个 的补丁打得很真牛。毕竟考虑到兼容性问题,没有加新语法。 从另一个角度来说,: 比起 的 写法 还是丑了些。 16.1.2 流 对于集合功能的拓展,Java8 遵守了开闭原则,引入了一套全新的 。 提供了 接口 提供了其实现类 。 提供了像 这样的操作。 详见:《Java8实战》读书笔记10:组合式异步编程 Completabl原创 2022-07-08 10:41:38 · 163 阅读 · 0 评论 -
《Java8实战》读书笔记13:Java8 与 Scala
见识一下 与 做个对比 。 这是官方提供的在线环境用于新手了解Scala :https://scastie.scala-lang.org/ scala3 如下:(莫非强制加返回类型?) 直接看个截图吧: 用于完成到的。 声明,可读写。 声明,是只读的。 可显示声明变量类型。不过Scala可以替你推断变量的类型。 2. 不可变与可变的比较 的集合只读`的。(Scala并未强制你必须使用不可变集合,只是各种暗示你接受这种风格) 可见其推荐的 就是将变化部分创建副本,并引用无变化的部分。得到原创 2022-07-07 19:07:41 · 467 阅读 · 0 评论 -
《Java8实战》读书笔记12:函数式编程
一个数据被多方修改是一切并发问题的起因,是万恶之源。 如果一个方法既不修改它内嵌类的状态,也不修改其他对象的状态,使用return返回所有的计算结果,那么我们称其为纯粹的或者无副作用的。 不可变对象:它们一旦完成初始化就不会被任何方法修改状态。它是线程安全的。 如果构成系统的各个组件都能做到“无副作用”,该系统就能在完全无锁的情况下,使用多核的并发机制,因为任何一个方法都不会对其他的方法造成干扰。命令式编程:适合传统的面向对象。因为它的特点是它的指令和计算机底层的词汇非常相近,比如赋值、条件分支以及循环。原创 2022-07-06 18:07:44 · 513 阅读 · 0 评论 -
《Java8实战》读书笔记11:Java8中新的日期、时间API
这些新类都位于 java.time 包下。提供了统一风格的 API。 下表所有类都实现了 Temporal 接口。 如:获取年、月、日、周、时、分、秒等方法。 使用工厂方法从系统时钟中获取当前的日期 代码清单12-2 使用TemporalField读取LocalDate的值 2022年07月04日 代码清单12-3 创建LocalTime并读取其值 和 都可以通过静态方法 解析代表它们的字符串创建。 12.1.2 合并日期和时间 代码清单12-4 直接创建LocalDateTime对象,或者通原创 2022-07-04 23:02:56 · 342 阅读 · 0 评论 -
《Java8实战》读书笔记10:组合式异步编程 CompletableFuture
看看本章的标题,也能猜出只是个引子,它虽然也提供了一个 boolean isDone() 用来判断异步任务是否完成。但总的来说还是太简陋。接下来,了解新的 CompletableFuture 类(它实现了 Future接口) 如何利用 Java 8 的新特性以更直观的方式将上述需求都变为可能。 和 的设计都遵循了类似的模式:它们都使用了 表达式以及 的思想。从这个角度,你可以说 和 的关系就跟 和 的关系一样。本节说后续会做一个“最佳价格查询器”,从中学到不拉不拉(直接看下文即可)略。。。先准原创 2022-07-03 18:15:02 · 526 阅读 · 0 评论 -
《Java8实战》读书笔记09:用 Optional 处理值为 null 的情况
大名顶顶的从我们入坑起就阴魂不散。我也增想过每次都要 代码太难看,但是很多时候不判又不严谨,是不是要封装一个工具类来干这事。很好 java.util.Optional 就是那个工具类。(可恨他们又趁我没想好,就剽窃走了。) 的思路就是把实际的(对象)保护起来,对外开放一组接口,用于满足当 或 时进行某些操作。构造函数都是 private 的不能 new 。 使用静态工厂方法,依据一个(为空会抛异常)创建对象: 使用静态工厂方法,你可以创建一个值的对象: 10.3.2 使用 map ...原创 2022-06-29 17:53:37 · 407 阅读 · 0 评论 -
《Java8实战》读书笔记08:接口的默认方法
今天能给加默认方法,那明天会不会放开呢?不好说!单纯的从语法上来区分它,会变的越来越像文字游戏。我们应该去理解与的。语法方法面的问题 IDE 都会有提示,实在记不住也没关系,写的多了自然就记得了。书中举例:所有的 Collection 类都实现了名为 java.util.Collection 的接口。通过向此接口中添加实现统一向所有集合类添加 方法。 9.3 默认方法的使用模式 9.3.1 可选方法 有些方法是可以忽略的,以前每个实现类都要提供一个空方法覆盖一下,现在可以在接口里直接用搞定了。 的接口,用原创 2022-06-26 18:10:01 · 568 阅读 · 0 评论 -
《Java8实战》读书笔记07:Lambda 重构、测试和调试(设计模式实现)
注意:我们重构的目的是让代码更简洁直观,这也是我们要不要把换成的依据。(如果重构后,导致逻辑更绕,阅读成本增加就没必要了。) 可用来简化的废话代码。(比如:核心代码就一句话,为了这一句,以前非得让我实例化一个匿名类再重写方法,太多无用功。) Lambda 是,是。对此保持清醒的认识,关于、的问题就不言自明了。 的根据上下文决定。如果出现,可以类型。例子: (IntelliJ支持这种重构,能自动帮你检查) 8.1.3 从 Lambda 表达式到方法引用的转换 这是一段实现的分组逻辑。将内的业务代码原创 2022-06-25 20:56:21 · 568 阅读 · 0 评论 -
《Java8实战》读书笔记06:Parallel Stream 并行流
《Java8实战》 - 读书笔记 - Parallel Stream并行流知识第7章 并行数据处理与性能7.1 并行流7.1.1 将顺序流转换为并行流7.1.2 测量流性能7.1.3 正确使用并行流7.1.4 高效使用并行流7.2 分支/合并框架7.2.1 使用 RecursiveTask7.2.2 使用分支/合并框架的最佳做法 第7章 并行数据处理与性能 7.1 并行流 7.1.1 将顺序流转换为并行流 parallel sequential stream.parallel() .filter(.原创 2022-03-01 21:50:29 · 1941 阅读 · 0 评论 -
《Java8实战》读书笔记05:Stream流操作(下) - collect 收集数据
Collectors实用类提供了很多静态工厂方法,可以方便地创建常见收集器的实例,只要拿来用就可以了。最直接和最常用的收集器是静态方法,它会把流中所有的元素收集到一个中: 收集 toList java.util.stream.Collectors.toList() 把流中所有项目收集到一个 List 收集 toSet java.util.stream.Collectors.toSet() 把流中所有项目收集到一个 Set,删除重复项 收集 toMap java.util.stream.Collectors原创 2022-06-05 10:51:12 · 640 阅读 · 0 评论 -
《Java8实战》读书笔记04:Stream流操作(上) - 基本用法
Java8实战 - 读书笔记 - Stream 流原创 2021-11-21 23:21:30 · 1070 阅读 · 1 评论 -
《Java8实战》读书笔记03:Lambda 表达式的组合用法
《Java8实战》 - 读书笔记 - Lambda 表达式的组合用法3.8 复合 Lambda 表达式的有用方法1. 比较器复合测试对象比较器 Comparator.comparin按照 age 升序按照 age 降序比较器链 thenComparing使用 `thenComparing` 拼接`排序条件`使用 `thenComparing` 拼接`比较器`2. 谓词复合 Predicate<T>逻辑非 negate逻辑与 and逻辑或 or3. 函数复合 Function<T/,V>先己后人 andTh原创 2021-11-21 20:29:55 · 623 阅读 · 0 评论 -
《Java8实战》读书笔记02:Lambda语法糖 - Method Reference 方法引用
Java8学习笔记 - 方法引用:Lambda的语法糖定义常见的例子自己实现`方法引用`静态方法引用 Class::staticMethod对象的实例方法引用 Instance::instanceMethod任意类型实例方法引用 Class::method构造器引用 Class::new 定义 方法引用可以理解为Lambda的一种语法糖。 当我们有一大堆函数需要接收Lambda时,同样的Lambda大量重复,显然不是我们想要的。 常见的例子 这里的System.out::println就是方法引用 Stri原创 2021-10-31 22:03:26 · 381 阅读 · 0 评论 -
《Java8实战》读书笔记01:Lambda 和 函数式接口
Java8学习笔记 - 在哪里可以使用Lambda表达式 + 什么是函数式接口定义举例 定义 你可以在函数式接口上使用Lambda表达式。 函数式接口就是只定义了一个抽象方法的接口。 举例 定义一个函数式接口 public interface NameFormat{ String format(String str); } 定义一个方法,它可以接收函数式接口类型的参数 public void showName(String name, NameFormat f){原创 2021-10-31 14:25:40 · 418 阅读 · 0 评论