百度|读Java实战(第二版)笔记05_Collection API的增强功能

【百度|读Java实战(第二版)笔记05_Collection API的增强功能】百度|读Java实战(第二版)笔记05_Collection API的增强功能


读Java实战(第二版)笔记05_Collection API的增强功能
1. 集合工厂1.1. Arrays.asList()1.1.1. 创建了一个固定大小的列表1.1.2. 列表的元素可以更新1.1.3. 不能增加或者删除1.1.4. 大小固定的可变数组1.2. 没有Arrays.asSet()1.2.1. 可以向HashSet的构造器传递一个列表实现1.2.2. Stream.of 结合Collectors.toSet()实现1.2.3. 可变的Set1.3. List.of1.3.1. 一个只读列表1.3.2. 保护你的集合 , 以免被意外地修改1.3.3. 不要在工厂方法创建的列表中存放null元素1.3.4. 10个元素是分水岭 , Set , Map也一样1.3.5. 使用List.of创建超过10个元素的列表1.3.6. 使用List.of创建不超过10个元素的列表1.4. Set.of1.4.1. 创建列表元素的不可变Set集合1.5. Map.of1.5.1. 创建不到10个键值对的小型不可变Map1.6. Map.ofEntries1.6.1. 以变长参数列表形式组织的Map.Entry<K V>对象作为参数1.6.2. 创建额外的对象 , 从而实现对键和值的封装1.6.3. 不可变Map1.6.4. Map.entry1.6.4.1. 用于创建Map.Entry对象的工厂方法1.7. Java91.8. 除非需要进行某种形式的数据处理并对数据进行转换 , 否则应该尽量使用工厂方法2. 定长元素版本的函数2.1. 没有分配数组、初始化以及最后对它进行垃圾回收的开销3. 变参版本的函数3.1. 需要额外分配一个数组3.2. 这个数组被封装于列表中3.3. 要负担分配数组、初始化以及最后对它进行垃圾回收的开销4. 使用Set4.1. removeIf4.1.1. 移除集合中匹配指定谓词的元素5. 使用List5.1. removeIf5.1.1. 移除集合中匹配指定谓词的元素5.2. replaceAll5.2.1. 用一个函数(UnaryOperator)替换元素5.3. sort5.3.1. 对列表自身的元素进行排序6. Java86.1. 改变的是集合自身7. 使用Map7.1. forEach7.1.1. 接受一个BiConsumer , 以Map的键和值作为参数7.1.2. 让代码更简洁7.2. 排序7.2.1. Entry.comparingByValue7.2.2. Entry.comparingByKey7.3. getOrDefault7.3.1. 提供一个默认值7.3.2. 在Map中找不到指定的键时 , 该默认值会作为返回值7.3.3. 如果键在Map中存在 , 但碰巧被赋予的值是null , 那么getOrDefault还是会返回null7.3.4. 无论该键存在与否 , 作为参数传入的表达式每次都会被执行7.4. computeIfAbsent7.4.1. 如果指定的键没有对应的值(没有该键或者该键对应的值是空) , 那么使用该键计算新的值 , 并将其添加到Map中7.4.2. 应用场景是缓存信息7.5. computeIfPresent7.5.1. 如果指定的键在Map中存在 , 就计算该键的新值 , 并将其添加到Map中7.5.2. 如果生成结果的方法返回的值为空 , 那么当前的映射就会从Map中移除7.6. compute7.6.1. 使用指定的键计算新的值 , 并将其存储到Map中7.7. remove7.7.1. 从Map中删除指定键对应的映射条目7.8. replaceAll7.8.1. 通过BiFunction替换Map中每个项的值7.9. Replace7.9.1. 如果键存在 , 就可以通过该方法替换Map中该键对应的值7.9.2. 可以仅在原有键对应某个特定的值时才进行替换7.10. merge7.10.1. 在合并时对值有更加灵活的控制7.10.1.1. 使用BiFunction方法处理重复的键7.10.1.2. 执行初始化检查7.10.2. 如果指定的键并没有关联值 , 或者关联的是一个空值 , 那么会将它关联到指定的非空值7.10.3. 否则 , 会用给定映射函数的[返回值
替换该值 , 如果映射函数的返回值为空就删除[该键