《计算机科学丛书 Java语言程序设计 进阶篇 原书第10版》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)梁勇(Y.DanielLiang)
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2016
  • ISBN:9787111548560
  • 页数:468 页
图书介绍:本书是Java语言的经典教材,中文版分为基础篇和进阶篇,主要介绍程序设计基础、面向对象程序设计、GUI程序设计、数据结构和算法、高级Java程序设计等内容。本书可作为高等院校相关专业程序设计课程的基础教材,也可作为Java语言及编程爱好者的参考资料。

第19章 泛型 1

19.1 引言 1

19.2 动机和优点 1

19.3 定义泛型类和接口 4

19.4 泛型方法 5

19.5 示例学习:对一个对象数组进行排序 7

19.6 原始类型和向后兼容 8

19.7 通配泛型 10

19.8 消除泛型和对泛型的限制 12

19.9 示例学习:泛型矩阵类 15

关键术语 19

本章小结 19

测试题 20

编程练习题 20

第20章 线性表、栈、队列和优先队列 21

20.1 引言 21

20.2 合集 21

20.3 迭代器 25

20.4 线性表 26

20.4.1 List接口中的通用方法 26

20.4.2 数组线性表类ArrayList和链表类LinkedList 27

20.5 Comparator接口 30

20.6 线性表和合集的静态方法 32

20.7 示例学习:弹球 35

20.8 向量类和栈类 38

20.9 队列和优先队列 40

20.9.1 Queue接口 40

20.9.2 双端队列Deque和链表LinkedList 40

20.10 示例学习:表达式求值 43

关键术语 47

本章小结 47

测试题 47

编程练习题 47

第21章 集合和映射表 53

21.1 引言 53

21.2 集合 53

21.2.1 HashSet 54

21.2.2 LinkedHashSet 57

21.2.3 TreeSet 58

21.3 比较集合和线性表的性能 61

21.4 示例学习:统计关键字 63

21.5 映射表 65

21.6 示例学习:单词的出现次数 69

21.7 单元素与不可变的合集和映射表 71

关键术语 72

本章小结 72

测试题 72

编程练习题 72

第22章 开发高效算法 75

22.1 引言 75

22.2 使用大O符号来衡量算法效率 75

22.3 示例:确定大O 77

22.4 分析算法的时间复杂度 81

22.4.1 分析二分查找算法 81

22.4.2 分析选择排序算法 81

22.4.3 分析汉诺塔问题 81

22.4.4 常用的递推关系 82

22.4.5 比较常用的增长函数 82

22.5 使用动态编程计算斐波那契数 83

22.6 使用欧几里得算法求、最大公约数 85

22.7 寻找素数的高效算法 89

22.8 使用分而治之法寻找最近的点对 94

22.9 使用回溯法解决八皇后问题 97

22.10 计算几何:寻找凸包 99

22.10.1 卷包裹算法 100

22.10.2 格雷厄姆算法 101

关键术语 102

本章小结 102

测试题 103

编程练习题 103

第23章 排序 109

23.1 引言 109

23.2 插入排序 110

23.3 冒泡排序 112

23.4 归并排序 114

23.5 快速排序 117

23.6 堆排序 121

23.6.1 堆的存储 122

23.6.2 添加一个新的结点 122

23.6.3 删除根结点 123

23.6.4 Heap类 124

23.6.5 使用Heap类进行排序 126

23.6.6 堆排序的时间复杂度 127

23.7 桶排序和基数排序 128

23.8 外部排序 129

23.8.1 实现阶段Ⅰ 131

23.8.2 实现阶段Ⅱ 132

23.8.3 结合两个阶段 133

23.8.4 外部排序复杂度 136

关键术语 136

本章小结 136

测试题 137

编程练习题 137

第24章 实现线性表、栈、队列和优先队列 141

24.1 引言 141

24.2 线性表的通用特性 141

24.3 数组线性表 144

24.4 链表 151

24.4.1 结点 151

24.4.2 MyLinkedList类 153

24.4.3 实现MyLinkedList 154

24.4.4 MyArrayList和MyLinkedList 162

24.4.5 链表的变体 162

24.5 栈和队列 163

24.6 优先队列 167

本章小结 168

测试题 169

编程练习题 169

第25章 二叉查找树 171

25.1 引言 171

25.2 二叉查找树 171

25.2.1 表示二叉查找树 172

25.2.2 查找一个元素 173

25.2.3 在BST中插入一个元素 173

25.2.4 树的遍历 174

25.2.5 BST类 176

25.3 删除BST中的一个元素 184

25.4 树的可视化和MVC 189

25.5 迭代器 192

25.6 示例学习:数据压缩 194

关键术语 199

本章小结 199

测试题 199

编程练习题 199

第26章 AVL树 203

26.1 引言 203

26.2 重新平衡树 204

26.3 为AVL树设计类 205

26.4 重写insert方法 207

26.5 实现旋转 207

26.6 实现delete方法 208

26.7 AVLTree类 209

26.8 测试AVLTree类 214

26.9 AVL树的时间复杂度分析 216

关键术语 217

本章小结 217

测试题 217

编程练习题 217

第27章 散列 219

27.1 引言 219

27.2 什么是散列 219

27.3 散列函数和散列码 220

27.3.1 基本数据类型的散列码 220

27.3.2 字符串类型的散列码 221

27.3.3 压缩散列码 221

27.4 使用开放地址法处理冲突 222

27.4.1 线性探测 222

27.4.2 二次探测法 223

27.4.3 再哈希法 224

27.5 使用链地址法处理冲突 225

27.6 装填因子和再散列 226

27.7 使用散列实现映射表 227

27.8 使用散列实现集合 235

关键术语 241

本章小结 242

测试题 242

编程练习题 242

第28章 图及其应用 244

28.1 引言 244

28.2 基本的图术语 245

28.3 表示图 247

28.3.1 表示顶点 247

28.3.2 表示边:边数组 248

28.3.3 表示边:Edge对象 248

28.3.4 表示边:邻接矩阵 249

28.3.5 表示边:邻接线性表 249

28.4 图建模 251

28.5 图的可视化 261

28.6 图的遍历 263

28.7 深度优先搜索(DFS) 264

28.7.1 DFS的算法 264

28.7.2 DFS的实现 265

28.7.3 DFS的应用 267

28.8 示例学习:连通圆问题 268

28.9 广度优先搜索(BFS) 270

28.9.1 BFS的算法 270

28.9.2 BFS的实现 271

28.9.3 BFS的应用 272

28.10 示例学习:9枚硬币反面问题 273

关键术语 278

本章小结 278

测试题 278

编程练习题 278

第29章 加权图及其应用 283

29.1 引言 283

29.2 加权图的表示 284

29.2.1 加权边的表示:边数组 284

29.2.2 加权邻接矩阵 285

29.2.3 邻接线性表 285

29.3 WeightedGraph类 286

29.4 最小生成树 292

29.4.1 最小生成树算法 293

29.4.2 完善Prim的MST算法 295

29.4.3 MST算法的实现 295

29.5 寻找最短路径 298

29.6 示例学习:加权的9枚硬币反面问题 305

关键术语 308

本章小结 308

测试题 309

编程练习题 309

第30章 多线程和并行程序设计 314

30.1 引言 314

30.2 线程的概念 314

30.3 创建任务和线程 315

30.4 Thread类 318

30.5 示例学习:闪烁的文本 320

30.6 线程池 322

30.7 线程同步 324

30.7.1 synchronized关键字 326

30.7.2 同步语句 327

30.8 利用加锁同步 327

30.9 线程间协作 329

30.10 示例学习:生产者/消费者 333

30.11 阻塞队列 336

30.12 信号量 338

30.13 避免死锁 339

30.14 线程状态 340

30.15 同步合集 341

30.16 并行编程 342

关键术语 346

本章小结 346

测试题 347

编程练习题 347

第31章 网络 350

31.1 引言 350

31.2 客户端/服务器计算 351

31.2.1 服务器套接字 351

31.2.2 客户端套接字 351

31.2.3 通过套接字进行数据传输 352

31.2.4 客户端/服务器示例 353

31.3 InetAddress类 357

31.4 服务多个客户 358

31.5 发送和接收对象 361

31.6 示例学习:分布式井字游戏 365

关键术语 376

本章小结 376

测试题 376

编程练习题 376

第32章 Java数据库程序设计 379

32.1 引言 379

32.2 关系型数据库系统 379

32.2.1 关系结构 380

32.2.2 完整性约束 381

32.3 SQL 383

32.3.1 在MySQL上创建用户账户 383

32.3.2 创建数据库 384

32.3.3 创建和删除表 385

32.3.4 简单插入、更新和删除 386

32.3.5 简单查询 387

32.3.6 比较运算符和布尔运算符 387

32.3.7 操作符like、between-and和is null 388

32.3.8 列的别名 388

32.3.9 算术运算符 389

32.3.10 显示互不相同的记录 389

32.3.11 显示排好序的记录 390

32.3.12 联结表 390

32.4 JDBC 391

32.4.1 使用JDBC开发数据库应用程序 392

32.4.2 从JavaFX访问数据库 396

32.5 PreparedStatement 398

32.6 CallableStatement 400

32.7 获取元数据 403

32.7.1 数据库元数据 403

32.7.2 获取数据库表 404

32.7.3 结果集元数据 405

关键术语 406

本章小结 406

测试题 407

编程练习题 407

第33章 JavaServer Faces 411

33.1 引言 411

33.2 开始使用JSF 411

33.2.1 创建一个JSF项目 412

33.2.2 一个基本的JSF页面 412

33.2.3 JSF的受管JavaBean 414

33.2.4 JSF表达式 416

33.3 JSF GUI组件 418

33.4 处理表单 421

33.5 示例学习:计算器 425

33.6 会话跟踪 428

33.7 验证输入 430

33.8 将数据库与facelet绑定 434

33.9 打开一个新的JSF页面 439

关键术语 445

本章小结 445

测试题 445

编程练习题 446

附录A Java关键字 451

附录B ASCⅡ字符集 452

附录C 操作符优先级表 453

附录D Java修饰符 454

附录E 特殊浮点值 455

附录F 数系 456

附录G 位操作 460

附录H 正则表达式 461

附录I 枚举类型 465