![]()
内容推荐 本书通过探讨Java开发工作中常会遇到的问题及相关解决方案,介绍了涉及字符串、数字、数组、集合、数据结构、日期和时间、对象、不可变性、Switch表达式、类型推断、Java I/O、Java反射、函数式编程、并发、HTTP Client API和Websocket等方面的核心知识与实用技巧。 这些简单或复杂的问题,将帮助你提升解决现实问题的编程能力,使你了解相关问题基于Java 8~12的最佳实践,同时还可以检测你对相关技术的掌握程度。 本书可供初级和中级Java开发人员参考,同样也适合正为相关技术面试做准备的求职者阅读。 目录 第1章 字符串、数字和数学 问题 解决方案 1.统计重复字符的数量 2.寻找第一个非重复字符 3.反转字母和单词 4.检查字符串是否仅包含数字 5.统计元音和辅音的数量 6.统计某个特定字符的出现次数 7.将String转换为int、long、float或double类型 8.去除字符串中的空格 9.用分隔符连接多个字符串 10.生成全部排列组合 11.检查字符串是否为回文 12.删除重复的字符 13.删除给定的字符 14.找到出现次数最多的字符 15.按长度对字符串数组排序 16.检查字符串是否包含子串 17.计算字符串中子串的出现次数 18.判断两个字符串是否互为变位词 19.声明多行字符串(文本块) 20.重复拼接同一个字符串n次 21.删除首尾空格 22.寻找最长公共前缀 23.应用缩进 24.字符串转换 25.求最小值与最大值 26.求两个大数之和(int/long)并处理运算溢出的情况 27.解析特定进制下的无符号数 28.通过无符号转换转变数字 29.比较两个无符号数 30.无符号数的除法和取模 31.判断float/double是否为有限浮点数 32.对两个布尔表达式执行逻辑AND/OR/XOR运算 33.将BigInteger转换为基本类型 34.将long类型转换为int类型 35.计算取整除和模数 36.相邻浮点数 37.求两个大数的乘积(int/long)并处理运算溢出的情况 38.融合乘加(FMA) 39.紧凑数字格式化 小结 第2章 对象、不可变性和Switch表达式 问题 解决方案 40.用函数式和命令式风格的码检查空引用 41.检查空引用并抛出自定义的NullPointerException异常 42.检查空引用并抛出指定的异常 43.检查空引用并返回非空默认引用 44.检查索引是否在[0,length)范围内 45.检查子区间是否在[0,length)范围内 46.equals()和hashCode() 47.简述不可变对象 48.不可变字符串 49.编写一个不可变类 50.在不可变类中传递/返回可变对象 51.使用建造者模式编写不可变类 52.避免在不可变对象中出现错误数据 53.克隆对象 54.重写toString() 55.新版Switch表达式 56.多个case标签 57.语句块 小结 第3章 处理日期和时间 问题 解决方案 58.字符串与日期时间的转换 59.格式化日期和时间 60.获取当前日期/时间(不含时间/日期) 61.基于LocalDate和LocalTime构建LocalDateTime 62.通过Instant类获取机器时间 63.使用基于日期的值(Period)定义时间段;使用基于时间的值(Duration)表示一小段时间 64.提取日期和时间单位 65.加减日期时间 66.获取所有时区的UTC和GMT 67.获取所有可用时区的本地日期时间 68.显示有关航班的日期时间信息 69.将Unix时间戳转换为日期时间 70.查找某月的第一天/最后一天 71.定义/提取时区偏移 72.在Date和Temporal之间转换 73.遍历一段日期范围 74.计算年龄 75.获得一天的起始和结束时间 76.两个日期之间的差异 77.实现一个国际象棋计时器 小结 第4章 类型推断 问题 解决方案 78.简单的var示例 79.使用var与基本类型 80.使用var和隐式类型转换来提高码的可维护性 81.显式向下转型(downcast)应避免使用var 82.在变量名没有足够的类型信息保障可读性时应避免使用var 83.结合LVTI和面向接口编程技术 84.结合LVTI和钻石操作符 85.将数组赋值给var 86.在多变量声明中使用LVTI 87.LVTI和变量作用域 88.LVTI和三元操作符 89.LVTI和for循环 90.LVTI和流 91.使用LVTI拆分嵌套/大型表达式链 92.LVTI和方法返回值及参数类型 93.LVTI和匿名类 94.LVTI可以是final变量或effectivelyfinal变量 95.LVTI和Lambda表达式 96.LVTI和空初始化器、实例变量以及catch块变量 97.LVTI和泛型类型 98.LVTI、通配符、协变和逆变 小结 第5章 数组、集合和数据结构 问题 解决方案 99.对数组进行排序 100.查找数组元素 101.检查两个数组是否相等或不匹配 102.按字典序比较两个数组 103.用数组创建流 104.计算数组的最小值、最大值和平均值 105.反转数组 106.填充和设置数组 107.下一个更大的元素(NGE) 108.改变数组大小 109.创建不可修改/不可变的集合 110.映射默认值 111.判断Map中键是否存在或缺失 112.从Map中移除元素 113.替换Map条目 114.比较两个Map 115.对Map进行排序 116.复制HashMap 117.合并两个Map 118.移除集合中所有符合谓词条件的元素 119.将集合转换为数组 120.使用列表筛选集合 121.替换列表元 |