• Java编程问题
  • Java编程问题
  • Java编程问题
  • Java编程问题
  • Java编程问题
21年品牌 40万+商家 超1.5亿件商品

Java编程问题

全新正版 极速发货

98.99 6.6折 149 全新

库存28件

广东广州
认证卖家担保交易快速发货售后保障

作者(罗)安赫尔·伦纳德

出版社化学工业出版社

ISBN9787122449597

出版时间2024-07

装帧平装

开本16开

定价149元

货号1203286817

上书时间2024-07-02

徐小智的书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介


目录
第1章 字符串、数字和数学 1

问题 1

解决方案 2

1.统计重复字符的数量 3

2.寻找第一个非重复字符 5

3.反转字母和单词 7

4.检查字符串是否仅包含数字 7

5.统计元音和辅音的数量 8

6.统计某个特定字符的出现次数 10

7.将String转换为int、long、float或double类型 11

8.去除字符串中的空格 12

9.用分隔符连接多个字符串 12

10.生成全部排列组合 13

11.检查字符串是否为回文 15

12.删除重复的字符 16

13.删除给定的字符 17

14.找到出现次数最多的字符 19

15.按长度对字符串数组排序 20

16.检查字符串是否包含子串 22

17.计算字符串中子串的出现次数 22

18.判断两个字符串是否互为变位词 23

19.声明多行字符串(文本块) 24

20.重复拼接同一个字符串n次 25

21.删除首尾空格 27

22.寻找公共前缀 27

23.应用缩进 28

24.字符串转换 30

25.求最小值与值 30

26.求两个大数之和(int/long)并处理运算溢出的情况 31

27.解析特定进制下的无符号数 32

28.通过无符号转换转变数字 33

29.比较两个无符号数 33

30.无符号数的除法和取模 34

31.判断float/double是否为有限浮点数 34

32.对两个布尔表达式执行逻辑AND/OR/XOR运算 35

33.将BigInteger转换为基本类型 36

34.将long类型转换为int类型 37

35.计算取整除和模数 37

36.相邻浮点数 38

37.求两个大数的乘积(int/long)并处理运算溢出的情况 39

38.融合乘加(FMA) 40

39.紧凑数字格式化 41

小结 44

第2章 对象、不可变性和Switch表达式 45

问题 45

解决方案 46

40.用函数式和命令式风格的代码检查空引用 46

41.检查空引用并抛出自定义的NullPointerException异常 48

42.检查空引用并抛出指定的异常 50

43.检查空引用并返回非空默认引用 51

44.检查索引是否在[0, length)范围内 52

45.检查子区间是否在[0, length)范围内 54

46. equals()和hashCode() 55

47.简述不可变对象 59

48.不可变字符串 59

49.编写一个不可变类 62

50.在不可变类中传递/返回可变对象 63

51.使用建造者模式编写不可变类 65

52.避免在不可变对象中出现错误数据 68

53.克隆对象 69

54.重写toString() 73

55.新版Switch表达式 75

56.多个case标签 77

57.语句块 77

小结 78

第3章 处理日期和时间 79

问题 79

解决方案 80

58.字符串与日期时间的转换 80

59.格式化日期和时间 83

60.获取当前日期/时间(不含时间/日期) 86

61.基于LocalDate和LocalTime构建LocalDateTime 86

62.通过Instant类获取机器时间 86

63.使用基于日期的值(Period)定义时间段;使用基于时间的值(Duration)表示一小段时间 89

64.提取日期和时间单位 93

65.加减日期时间 94

66.获取所有时区的UTC和GMT 95

67.获取所有可用时区的本地日期时间 96

68.显示有关航班的日期时间信息 97

69.将Unix时间戳转换为日期时间 99

70.查找某月的第一天/最后一天 99

71.定义/提取时区偏移 102

72.在Date和Temporal之间转换 103

73.遍历一段日期范围 106

74.计算年龄 108

75.获得一天的起始和结束时间 108

76.两个日期之间的差异 111

77.实现一个国际象棋计时器 113

小结 116

第4章 类型推断 117

问题 117

解决方案 118

78.简单的var示例 118

79.使用var与基本类型 120

80.使用var和隐式类型转换来提高代码的可维护性 121

81.显式向下转型(downcast)应避免使用var 122

82.在变量名没有足够的类型信息保障可读性时应避免使用var 123

83.结合LVTI和面向接口编程技术 124

84.结合LVTI和钻石操作符 124

85.将数组赋值给var 125

86.在多变量声明中使用LVTI 126

87. LVTI和变量作用域 127

88. LVTI和三元操作符 128

89. LVTI和for循环 129

90. LVTI和流 130

91.使用LVTI拆分嵌套/大型表达式链 130

92. LVTI和方法返回值及参数类型 131

93. LVTI和匿名类 132

94. LVTI可以是final变量或effectively final变量 132

95. LVTI和Lambda表达式 134

96. LVTI和空初始化器、实例变量以及catch块变量 134

97. LVTI和泛型类型 135

98. LVTI、通配符、协变和逆变 136

小结 138

第5章 数组、集合和数据结构 139

问题 139

解决方案 140

99.对数组进行排序 140

100.查找数组元素 149

101.检查两个数组是否相等或不匹配 153

102.按字典序比较两个数组 156

103.用数组创建流 158

104.计算数组的最小值、值和平均值 159

105.反转数组 162

106.填充和设置数组 164

107.下一个更大的元素(NGE) 165

108.改变数组大小 166

109.创建不可修改/不可变的集合 167

110.映射默认值 172

111.判断Map中键是否存在或缺失 173

112.从Map中移除元素 177

113.替换Map条目 178

114.比较两个Map  179

115.对Map进行排序 180

116.复制HashMap 182

117.合并两个Map  183

118.移除集合中所有符合谓词条件的元素 184

119.将集合转换为数组 186

120.使用列表筛选集合 187

121.替换列表元素 188

122.线程安全的集合、栈和队列 189

123.广度优先搜索(BFS) 193

124.前缀树(Trie) 195

125.元组(Tuple) 198

126.并查集 200

127.芬威克树或二进制索引树 203

128.布隆过滤器 206

小结 209

第6章 Java I/O路径、文件、缓存、扫描和格式化 210

问题 210

解决方案 211

129.创建文件路径 211

130.变换文件路径 214

131.拼接文件路径 215

132.通过两个路径创建相对路径 216

133.比较文件路径 217

134.轮询路径 218

135.监听路径 225

136.流式获取文件文本内容 228

137.在文件树中搜索文件或文件夹 228

138.高效读写文本文件 230

139.高效读写二进制文件 235

140.大文件搜索 239

141.将一个JSON/CSV文件作为一个对象读取 241

142.处理临时文件和文件夹 245

143.过滤文件 249

144.判断两个文件是否不匹配 252

145.循环字节缓冲区 254

146.标记解析文件 259

147.将格式化输出直接写入文件 263

148.使用Scanner 265

小结 268

第7章 Java反射类、接口、构造函数、方法和字段 269

问题 269

解决方案 270

149.检查包 270

150.检查类和超类 273

151.通过反射构造函数实例化 279

152.获取参数上的注解 282

153.获取合成构造函数 283

154.检查可变参数 284

155.检查默认方法 285

156.通过反射实现基于嵌套的访问控制 285

157.面向getter和setter使用反射 288

158.反射与注解 294

159.调用实例方法 299

160.获取静态方法 300

161.获取方法、字段和异常的泛型 301

162.获取公共字段和私有字段 304

163.处理数组 305

164.检查模块 306

165.动态代理 307

小结 310

第8章 函数式编程:基础与设计模式 311

问题 311

解决方案 311

166.编写函数式接口 312

167. Lambda简介 317

168.实现环绕执行模式 318

169.实现工厂模式 320

170.实现策略模式 322

171.实现模板方法模式 323

172.实现观察者模式 325

173.实现贷出模式 327

174.实现装饰器模式 329

175.实现级联建造者模式 332

176.实现命令模式 333

小结 335

第9章 函数式编程:进阶 336

问题 336

解决方案 337

177.测试高阶函数 337

178.测试使用Lambda表达式的方法 338

179.调试Lambda表达式 340

180.过滤流中的非0元素 342

181.无限流、takeWhile()和dropWhile() 344

182.映射流中的元素 351

183.找出流中的元素 356

184.匹配流中元素 357

185.流中的sum、max和min操作 359

186.收集流的返回结果 362

187.连接流的返回结果 364

188.聚合收集器 365

189.分组(grouping) 369

190.分区(partitioning) 376

191. filtering、flattening和mapping收集器 379

192. teeing 382

193.编写自定义收集器 385

194.方法引用 389

195.并行处理流 391

196. null-safe流 395

197.组合方法、谓词和比较器 397

198.默认方法 402

小结 403

第10章 并发:线程池、Callable接口以及同步器 404

问题 404

解决方案 405

199.线程生命周期状态 405

200.对象级锁与类级锁的对比 410

201. Java中的线程池 413

202.单线程的线程池 417

203.拥有固定线程数量的线程池 423

204.带缓存和调度的线程池 424

205.工作窃取(work-stealing)线程池 430

206. Callable和Future 435

207.调用多个Callable任务 440

208.锁存器(latch) 442

209.屏障(barrier) 445

210.交换器(exchanger) 448

211.信号量(semaphore) 451

212.移相器(phaser) 453

小结 458

第11章 并发:深入探讨 459

问题 459

解决方案 460

213.可中断方法 460

214. fork/join框架 463

215. fork/join框架和compareAndSetForkJoinTaskTag() 469

216. CompletableFuture 472

217.组合多个CompletableFuture实例 486

218.优化忙等待 490

219.任务的取消 491

220.线程局部存储(ThreadLocal) 492

221.原子变量 496

222.可重入锁(ReentrantLock) 500

223.可重入读写锁(ReentrantReadWriteLock) 503

224.邮戳锁(StampedLock) 505

225.死锁(哲学家就餐问题) 508

小结 511

第12章 Optional 512

问题 512

解决方案 513

226.初始化Optional 513

227. Optional.get()和值丢失 514

228.返回一个预先构造的默认值 514

229.返回一个不存在的默认值 515

230.抛出NoSuchElementException异常 516

231. Optional和null引用 517

232.消费一个存在内容的Optional类 518

233.根据情况返回一个给定的Optional类(或另一个Optional类) 519

234.通过orElseFoo()链接多个Lambda表达式 519

235.不要只是为了获取一个值而使用Optional 521

236.不要将Optional用于字段 521

237.不要将Optional用于构造函数的参数 522

238.不要将Optional用于setter类方法的参数 523

239.不要将Optional用于方法的参数 524

240.不要将Optional用于返回空的或者null的集合或数组 526

241.避免在集合中使用Optional 527

242.将of()和ofNullable()搞混淆 528

243. Optional与OptionalInt 529

244.确定Optional的相等性 529

245.通过map()和flatMap()转换值 530

246.通过Optional.filter()过滤值 532

247.链接Optional和Stream API 532

248. Optional和识别敏感类操作 534

249.在Optional的内容为空时返回布尔值 535

小结 535

第13章 HTTP Client和WebSocket API 536

问题 536

解决方案 537

250. HTTP/2 537

251.触发一次异步GET请求 538

252.设置一个代理 540

253.设置/获取请求头 540

254.指定HTTP方式 542

255.设置请求体 543

256.设置连接身份认证 545

257.设置请求超时 546

258.设置重定向策略 546

259.发送同步和异步请求 547

260.处理cookie 549

261.获取响应信息 550

262.处理响应的请求体类型 550

263.获取、更新和保存JSON 552

264.压缩 555

265.处理表单数据 556

266.下载资源 557

267.使用multipart上传 558

268. HTTP/2的服务器端推送 561

269. WebSocket 564

小结 566

内容摘要
本书通过探讨Java开发工作中常会遇到的问题及相关解决方案,介绍了涉及字符串、数字、数组、集合、数据结构、日期和时间、对象、不可变性、Switch表达式、类型推断、Java I/O、Java反射、函数式编程、并发、HTTP Client API和Websocket等方面的核心知识与实用技巧。

这些简单或复杂的问题,将帮助你提升解决现实问题的编程能力,使你了解相关问题基于Java 8~12的很好实践,同时还可以检测你对相关技术的掌握程度。

本书可供初级和中级Java开发人员参考,同样也适合正为相关技术面试做准备的求职者阅读。

主编推荐
JDK8-21版本快速迭代,即使仅关注LTS版,层出不穷的新特性也会令开发人员应接不暇。所以本书并不总是提倡新的解决方案,而是侧重于呈现某个问题的合理解决方案。
本书精心挑选250余个Java日常开发中经常需面对的难题,涉及字符串、数字、集合、数据结构、日期和时间、不可变性、类型推断Optional、Java I/O、Java反射、函数式编程、并发和HTTP客户端WebSocket API等内容。
书中为这些问题提供了解决思路与方案,这些知识还可帮你更从容面对面试与笔试。

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP