目录前言1第 1 章 接口7为什么有两种列表?8List 接口9练习 111第 2 章 算法分析14选择排序算法15大 O 表示法17练习 218第 3 章 ArrayList 类22对 MyArrayList 类中方法的分类22对 add 方法分类24问题规模26链接数据结构27练习 329关于垃圾回收的注记32第 4 章 LinkedList 类33MyLinkedList 方法的分类33比较 MyArrayList 和 MyLinkedList36性能分析36结果的解释39练习 441第 5 章 双向链表43结果的性能分析43分析 LinkedList 方法的性能45在 LinkedList 末尾添加47双向链表48选择一个结构49第 6 章 树的遍历51搜索引擎51解析 HTML52使用 JSOUP54遍历 DOM 树56深度优先搜索57Java 栈58迭代 DFS59第 7 章 到达哲学61准备开始61Iterable 接口和 Iterator 类62WikiFetcher64练习 565第 8 章 索引器68选择数据结构68TermCounter70练习 672第 9 章 Map 接口77实现 MyLinearMap77练习 778分析 MyLinearMap79第 10 章 哈希方法82哈希方法82哈希方法是如何工作的?84哈希方法和变体86练习 887第 11 章 HashMap89练习 989分析 MyHashMap90权衡考虑92对 MyHashMap 的性能分析93修改 MyHashMap94UML 类图96第 12 章 TreeMap98哈希方法有什么问题?98二叉搜索树99练习 10101实现 TreeMap102第 13 章 二叉搜索树106一个简单的 MyTreeMap106搜索值107实现 put108中序遍历算法110对数方法111自平衡树114另一个练习114第 14 章 持久性115Redis116Redis 客户端和服务器117构建一个 Redis 支持的索引118Redis 数据类型120练习 11122更多建议123一些设计提示125第 15 章 爬行维基百科126Redis 支持的索引器126查找的分析129索引分析129图的遍历130练习 12131第 16 章 布尔搜索135爬虫解决方案135信息检索137布尔搜索138练习 13139Comparable 和 Comparator 接口141扩展部分143第 17 章 排序145插入排序146练习 14148合并排序的分析149基数排序151堆排序153有界堆155空间复杂性156