内容简介
前言
第1章 接口
为什么有两种列表?
List接口
练习1
第2章 算法分析
选择排序算法
大O表示法
练习2
第3章 Array List类
对MyArrayList类中方法的分类
对add方法分类
问题规模
链接数据结构
练习3
关于垃圾回收的注记
第4章 LinkedList类
MyLinkedList方法的分类
比较MyArrayList和MyLinkedList
性能分析
结果的解释
练习4
第5章 双向链表
结果的性能分析
分析LinkedList方法的性能
在LinkedList末尾添加
双向链表
选择一个结构
第6章 树的遍历
搜索引擎
解析HTML
使用JSOUP
遍历DOM树
深度优先搜索
Java栈
迭代DFS
第7章 到达哲学
准备开始
Iterable接口和Iterator类
WikiFetcher
练习5
第8章 索引器
选择数据结构
TermCounter
练习6
第9章 Map接口
实现MyLinearMap
练习7
分析MyLinearMap
第10章 哈希方法
哈希方法
哈希方法是如何工作的?
哈希方法和变体
练习8
第11章 HashMap
练习9
分析MyHashMap
权衡考虑
对MyHashMap的性能分析
修改MyHashMap
UML类图
第12章 TreeMap
哈希方法有什么问题?
二叉搜索树
练习10
实现TreeMap
第13章 二叉搜索树
一个简单的MyTreeMap
搜索值
实现put
中序遍历算法
对数方法
自平衡树
另一个练习
第14章 持久性
Redis
Redis客户端和服务器
构建一个Redis支持的索引
Redis数据类型
练习11
更多建议
一些设计提示
第15章 爬行维基百科
Redis支持的索引器
查找的分析
索引分析
图的遍历
练习12
第16章 布尔搜索
爬虫解决方案
信息检索
布尔搜索
练习13
Comparable和Comparator接口
扩展部分
第17章 排序
插入排序
练习14
合并排序的分析
基数排序
堆排序
有界堆
空间复杂性