读Java实战(第二版)笔记11_语言特性和类库更新

Posted lying7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读Java实战(第二版)笔记11_语言特性和类库更新相关的知识,希望对你有一定的参考价值。

1. 注解

1.1. 一种使用附加信息装饰程序元素的机制

1.2. Java 8之前,只有声明可以被注解

1.3. 一种语法元数据(syntactic metadata)

1.4. 可以用于文档编制

1.4.1. @Deprecated注解被广泛应用于说明某个方法不再推荐使用

1.5. 依据注解检测错误

1.6. 依据注解禁止报警输出

1.7. 依据注解能生成代码

2. 重复注解

2.1. 老版的Java禁止对同一个声明使用多个同类的注解

2.1.1. 声明一个新的注解,它包含了你希望重复的注解数组

2.2. 一个注解在设计之初就是可重复的,那么你可以直接使用它

2.2.1. 将注解标记为@Repeatable

2.2.2. 提供一个注解的容器

        @Repeatable(Authors.class)
        @interface Author  String name(); 
        @interface Authors 
            Author[] value();
        

3. 类型注解

3.1. 应用于任何类型

3.1.1. new操作符

3.1.2. 类型转换

3.1.3. instanceof检查

3.1.4. 泛型类型参数

3.1.5. implements子句

3.1.6. 和throws子句

3.2. Checker框架

3.2.1. 定义了多种类型注解

3.2.2. 增强类型检查

3.2.3. checkerframework.org

4. 通用目标类型推断

4.1. 目标类型包括向方法传递的参数

4.2. 对泛型参数的推断进行了增强

4.2.1. 可以推断泛型参数的类型

5. Map

5.1. getOrDefault

5.1.1. 替换现在检测Map中是否包含给定键映射的惯用方法

5.1.2. 不存在这样的键映射,你可以提供一个默认值,方法会返回该默认值

5.2. computeIfAbsent

5.2.1. 非常方便地使用缓存模式

6. 集合

6.1. removeIf

6.1.1. 移除集合中满足某个谓词的所有元素

6.2. Stream API中的filter方法

6.2.1. 产生一个新的流,不会对当前作为数据源的流做任何变更

7. 列表

7.1. replaceAll

7.1.1. 对列表中的每一个元素执行特定的操作,并用处理的结果替换该元素

7.2. Stream中的map方法

7.2.1. 会生成新的元素

8. Collections类

8.1. NavigableMap

8.2. NavigableSet

8.3. checkedQueue

8.3.1. 返回一个队列视图,可以扩展进行动态类型检查

9. Comparator接口

9.1. reversed

9.1.1. 对当前的Comparator对象进行逆序排序,并返回排序之后新的Comparator对象

9.2. thenComparing

9.2.1. 当两个对象相同时,返回使用另一个Comparator进行比较的Comparator对象

9.3. thenComparingInt

9.4. thenComparingDouble

9.5. thenComparingLong

9.6. 针对基本数据类型

9.6.1. ToIntFunction

9.6.2. ToDoubleFunction

9.6.3. ToLongFunction

9.7. 实例方法

9.8. comparingInt

9.9. comparingDouble

9.10. comparingLong

9.11. 针对基本数据类型

9.11.1. ToIntFunction

9.11.2. ToDoubleFunction

9.11.3. ToLongFunction

9.12. naturalOrder

9.12.1. 对Comparable对象进行自然排序,返回一个Comparator对象

9.13. nullsFirst、nullsLast

9.13.1. 对空对象和非空对象进行比较,你可以指定空对象(null)比非空对象(non-null)小或者比非空对象大,返回值是一个Comparator对象

9.14. reverseOrder

9.14.1. 和naturalOrder().reversed()方法类似

9.15. 静态方法

10. 原子操作

10.1. java.util.concurrent.atomic包

10.2. getAndUpdate

10.2.1. 以原子方式用给定的方法更新当前值,并返回变更之前的值

10.3. updateAndGet

10.3.1. 以原子方式用给定的方法更新当前值,并返回变更之后的值

10.4. getAndAccumulate

10.4.1. 以原子方式用给定的方法对当前及给定的值进行更新,并返回变更之前的值

10.5. accumulateAndGet

10.5.1. 以原子方式用给定的方法对当前及给定的值进行更新,并返回变更之前的值

10.6. Adder

10.6.1. 尽量避免使用它们对应的原子类型

10.6.2. 支持加法操

10.6.3. LongAdder

10.6.4. DoubleAdder

10.7. Accumulator

10.7.1. 尽量避免使用它们对应的原子类型

10.7.2. 可以使用给定的方法整合多个值

10.7.3. LongAccumulator

10.7.4. DoubleAccumulator

11. ConcurrentHashMap

11.1. 允许并发地进行新增和更新操作

11.2. forEach

11.2.1. 对每个键值对进行特定的操作

11.3. reduce

11.3.1. 使用给定的精简函数(reduction function),将所有的键值对整合出一个结果

11.4. search

11.4.1. 对每一个键值对执行一个函数,直到函数的返回值为一个非空值

11.5. 使用键和值的操作

11.5.1. forEach

11.5.2. reduce

11.5.3. search

11.6. 使用键的操作

11.6.1. forEachKey

11.6.2. reduceKeys

11.6.3. searchKeys

11.7. 使用值的操作

11.7.1. forEachValue

11.7.2. reduceValues

11.7.3. searchValues

11.8. 使用Map.Entry对象的操作

11.8.1. forEachEntry

11.8.2. reduceEntries

11.8.3. searchEntries

11.9. 不会对ConcurrentHashMap的状态上锁

11.9.1. 只会在运行过程中对元素进行操作

11.9.2. 应用到这些操作上的函数不应该对任何的顺序,或者其他对象,抑或在计算过程发生变化的值,有依赖

11.10. mappingCount

11.10.1. 以长整型long返回map中映射的数目

11.10.2. 尽量使用这个新方法

11.10.2.1. 映射的数量可能是int无法表示的

11.11. KeySet

11.11.1. 以Set的形式返回ConcurrentHashMap的一个视图(对map的修改会反映在该Set中,反之亦然)

11.12. newKeySet

11.12.1. 由ConcurrentHashMap创建一个Set

12. Arrays

12.1. parallelSort

12.1.1. 以并发的方式对指定的数组进行排序

12.1.2. 可以使用自然顺序

12.1.3. 可以为数组对象定义特别的Comparator

12.2. setAll和parallelSetAll

12.2.1. 以顺序的方式也可以用并发的方式,使用提供的函数计算每一个元素的值,对指定数组中的所有元素进行设置

12.2.2. parallelSetAll需要并发执行,因此提供的函数必须没有任何副作用

12.3. parallelPrefix

12.3.1. 以并发的方式,利用用户提供的二进制操作符对给定数组中的每个元素进行累积计算

13. Number

13.1. Short、Integer、Long、Float和Double类

13.1.1. 静态方法sum、min和max

13.2. Integer和Long类

13.2.1. compareUnsigned、divideUnsigned、remainderUnsigned和toUnsignedString方法来处理无符号数

13.2.2. 静态方法parseUnsignedInt和parseUnsigned-Long将字符解析为无符号int或者long类型

13.2.3. Integer类提供了静态方法toUnsignedLong

13.3. Byte和Short类

13.3.1. toUnsignedInt和toUnsignedLong方法通过无符号转换将参数转化为int或者long类型

13.4. Double和Float类

13.4.1. 静态方法isFinite,可以检查参数是否为有限浮点数

13.5. Boolean类

13.5.1. 静态方法logicalAnd、logicalOr和logicalXor,可以在两个boolean之间执行and、or和xor操作

13.5.2. byteValueExact、shortValueExact、intValueExact和longValueExact,可以将BigInteger类型的值转换为对应的基础类型

14. Math

14.1. 使用int和long参数的addExact、subtractExact、multipleExact、incrementExact、decrementExact和negateExact

14.1.1. 新的方法可以抛出算术异常

14.2. 静态方法toIntExact

14.2.1. 可以将long值转换为int值

14.3. 静态方法floorMod、floorDiv和nextDown

15. Files

15.1. 可以用文件直接产生流

15.2. 静态方法Files.lines

15.2.1. 以延迟方式读取文件的内容,并将其作为一个流

15.3. Files.list

15.3.1. 生成由指定目录中所有条目构成的Stream‹Path›

15.3.2. 不是递归包含的

15.3.3. 处理包含内容非常庞大的目录时,这个方法非常有用

15.4. Files.walk

15.4.1. 生成包含给定目录中所有条目的Stream‹Path›

15.4.2. 是递归的

15.4.3. 可以设定递归的深度

15.4.4. 遍历是依照深度优先进行的

15.5. Files.find

15.5.1. 通过递归地遍历一个目录找到符合条件的条目,并生成一个Stream‹Path›对象

16. Reflection

16.1. java.lang.reflect.Parameter类

16.1.1. 查询方法参数的名称和修饰符

16.2. java.lang.reflect.Executable类

16.2.1. 通用函数和构造函数共享的父类

17. String

17.1. join

17.1.1. 用一个分隔符将多个字符串连接起来

以上是关于读Java实战(第二版)笔记11_语言特性和类库更新的主要内容,如果未能解决你的问题,请参考以下文章

读Java实战(第二版)笔记13_Java模块系统

读Java实战(第二版)笔记18_基于Lambda的领域特定语言

读Java实战(第二版)笔记08_默认方法

读Java实战(第二版)笔记12_重构测试和调试

读Java实战(第二版)笔记04_用流收集数据

读Java实战(第二版)笔记03_引入和使用流