Chapter 1:Java SE 8流库 1
1.1 从迭代到流操作 2
1.2 创建流 5
1.3 filter、map和flatMap方法 9
1.4 提取子流和连接流 10
1.5 其他流变换 11
1.6 简单规约 12
1.7 Optional类型 13
1.7.1 如何使用Optional值 14
1.7.2 不使用Optional值会有什么问题 15
1.7.3 创建Optional值 16
1.7.4 使用flatMap组合Optional值函数 16
1.8 收集结果 19
1.9 收集到Map中 24
1.10 分组与分区 28
1.11 下游的收集器 29
1.12 规约操作 33
1.13 基本类型的流 36
1.14 并行流 41
Chapter 2:输入与输出 47
2.1 输入/输出流 48
2.1.1 读写字节 48
2.1.2 流谱系概览 51
2.1.3 组合输入/输出流过滤器 55
2.2 文本输入与输出 60
2.2.1 输出文本 60
2.2.2 输入文本 62
2.2.3 文本格式保存对象 63
2.2.4 字符编码 67
2.3 读写二进制数据 69
2.3.1 DataInput和DataOutput接口 69
2.3.2 随机访问文件 72
2.3.3 ZIP文档 77
2.4 对象输入/输出流与序列化 80
2.4.1 序列化对象的保存与加载 80
2.4.2 理解对象序列化文件格式 85
2.4.3 修改默认的序列化机制 92
2.4.4 序列化单例和类型安全的枚举 94
2.4.5 版本管理 95
2.4.6 将序列化用于克隆 98
2.5 处理文件 100
2.5.1 路径 101
2.5.2 读写文件 104
2.5.3 创建文件与目录 105
2.5.4 复制、移动和删除文件 106
2.5.5 获取文件信息 108
2.5.6 访问目录条目 110
2.5.7 使用目录流 111
2.5.8 ZIP文件系统 115
2.6 内存映射文件 116
2.6.1 内存映射文件的性能 116
2.6.2 缓冲区数据结构 124
2.6.3 文件锁 126
2.7 正则表达式 128
Chapter 3:XML 143
3.1 XML简介 144
3.1.1 XML文档的结构 146
3.2 解析XML文档 149
3.3 验证XML文档 162
3.3.1 文档类型定义 163
3.3.2 XML模式 172
3.3.3 实用示例 175
3.4 使用XPath定位信息 190
3.5 使用命名空间 196
3.6 流解析器 199
3.6.1 使用SAX解析器 199
3.6.2 使用StAX解析器 205
3.7 生成XML文档 208
3.7.1 不带命名空间的文档 209
3.7.2 带命名空间的文档 209
3.7.3 写文档 210
3.7.4 示例:生成SVG文件 211
3.7.5 使用StAX写XML文档 214
3.8 XSL转换 222
Chapter 4:网络 233
4.1 连接到服务器 233
4.1.1 使用Telnet 233
4.1.2 使用Java连接到服务器 236
4.1.3 套接字超时 238
4.1.4 因特网地址 239
4.2 实现服务器 241
4.2.1 服务器套接字 242
4.2.2 为多个客户端服务 245
4.2.3 半关闭 249
4.3 可中断套接字 250
4.4 获取Web数据 257
4.4.1 URL和URI 257
4.4.2 使用URLConnection获取信息 259
4.4.3 提交表单数据 267
4.5 发送电子邮件 277
Chapter 5:数据库编程 281
5.1 JDBC的设计 282
5.1.1 JDBC驱动程序分类 283
5.1.2 JDBC的典型用法 284
5.2 结构化查询语言 285
5.3 JDBC配置 291
5.3.1 数据库URL 292
5.3.2 驱动程序JAR文件 292
5.3.3 启动数据库 293
5.3.4 注册驱动程序类 294
5.3.5 连接到数据库 294
5.4 使用JDBC语句 297
5.4.1 执行SQL语句 298
5.4.2 管理连接、语句和结果集 301
5.4.3 分析SQL异常 302
5.4.4 填充数据库 305
5.5 执行查询 309
5.5.1 预备语句 309
5.5.2 读写LOB 316
5.5.3 SQL转义 318
5.5.4 多结果集 319
5.5.5 获取自动生成的主键 320
5.6 可滚动和可更新的结果集 321
5.6.1 可滚动的结果集 321
5.6.2 可更新的结果集 324
5.7 行集 328
5.7.1 构建行集 329
5.7.2 缓存的行集 329
5.8 元数据 333
5.9 事务 344
5.9.1 使用JDBC编程实现事务 344
5.9.2 保存点 345
5.9.3 批量更新 345
5.10 高级SQL类型 347
5.11 Web与企业应用中的连接管理 349
Chapter 6:日期与时间API 351
6.1 时间线 352
6.2 本地日期 355
6.3 日期调整 358
6.4 本地时间 360
6.5 时区时间 361
6.6 格式化与解析 365
6.7 与遗留代码互操作 369
Chapter 7:国际化 371
7.1 地域 372
7.2 数字格式 378
7.3 货币 384
7.4 日期与时间 385
7.5 排序规则与标准化 393
7.6 消息格式化 400
7.6.1 格式化数字和日期 400
7.6.2 choice格式化选项 402
7.7 文本输入与输出 404
7.7.1 文本文件 405
7.7.2 文本行结尾符号 405
7.7.3 控制台 405
7.7.4 日志文件 406
7.7.5 UTF-8字节顺序标记 406
7.7.6 源文件的字符编码 407
7.8 资源包 408
7.8.1 定位资源包 409
7.8.2 属性文件 410
7.8.3 包类 411
7.9 完整示例 413
Chapter 8:脚本、编译与注解处理 429
8.1 Java平台的脚本 430
8.1.1 获得脚本引擎 430
8.1.2 脚本求值与绑定 431
8.1.3 重定向输入与输出 434
8.1.4 调用脚本函数和方法 435
8.1.5 编译脚本 437
8.1.6 示例:用脚本处理GUI事件 437
8.2 编译器API 443
8.2.1 编译的简单使用方法 443
8.2.2 使用编译任务 443
8.2.3 示例:动态Java代码生成 449
8.3 使用注解 455
8.3.1 注解简介 455
8.3.2 示例:注解事件处理程序 457
8.4 注解语法 462
8.4.1 注解接口 462
8.4.2 注解 464
8.4.3 在声明的地方使用注解 466
8.4.4 在类型使用的地方使用注解 467
8.4.5 对this做注解 468
8.5 标准注解 470
8.5.1 用于编译的注解 471
8.5.2 用于管理资源的注解 472
8.5.3 元注解 472
8.6 源码级注解处理 475
8.6.1 注解处理器 476
8.6.2 语言模型API 476
8.6.3 使用注解生成源代码 477
8.7 字节码引擎 481
8.7.1 修改类文件 481
8.7.2 在加载时修改字节码 486