目錄前言1第 1 章 接口7為什么有兩種列表?8List 接口9練習(xí) 111第 2 章 算法分析14選擇排序算法15大 O 表示法17練習(xí) 218第 3 章 ArrayList 類22對(duì) MyArrayList 類中方法的分類22對(duì) add 方法分類24問(wèn)題規(guī)模26鏈接數(shù)據(jù)結(jié)構(gòu)27練習(xí) 329關(guān)于垃圾回收的注記32第 4 章 LinkedList 類33MyLinkedList 方法的分類33比較 MyArrayList 和 MyLinkedList36性能分析36結(jié)果的解釋39練習(xí) 441第 5 章 雙向鏈表43結(jié)果的性能分析43分析 LinkedList 方法的性能45在 LinkedList 末尾添加47雙向鏈表48選擇一個(gè)結(jié)構(gòu)49第 6 章 樹(shù)的遍歷51搜索引擎51解析 HTML52使用 JSOUP54遍歷 DOM 樹(shù)56深度優(yōu)先搜索57Java 棧58迭代 DFS59第 7 章 到達(dá)哲學(xué)61準(zhǔn)備開(kāi)始61Iterable 接口和 Iterator 類62WikiFetcher64練習(xí) 565第 8 章 索引器68選擇數(shù)據(jù)結(jié)構(gòu)68TermCounter70練習(xí) 672第 9 章 Map 接口77實(shí)現(xiàn) MyLinearMap77練習(xí) 778分析 MyLinearMap79第 10 章 哈希方法82哈希方法82哈希方法是如何工作的?84哈希方法和變體86練習(xí) 887第 11 章 HashMap89練習(xí) 989分析 MyHashMap90權(quán)衡考慮92對(duì) MyHashMap 的性能分析93修改 MyHashMap94UML 類圖96第 12 章 TreeMap98哈希方法有什么問(wèn)題?98二叉搜索樹(shù)99練習(xí) 10101實(shí)現(xiàn) TreeMap102第 13 章 二叉搜索樹(shù)106一個(gè)簡(jiǎn)單的 MyTreeMap106搜索值107實(shí)現(xiàn) put108中序遍歷算法110對(duì)數(shù)方法111自平衡樹(shù)114另一個(gè)練習(xí)114第 14 章 持久性115Redis116Redis 客戶端和服務(wù)器117構(gòu)建一個(gè) Redis 支持的索引118Redis 數(shù)據(jù)類型120練習(xí) 11122更多建議123一些設(shè)計(jì)提示125第 15 章 爬行維基百科126Redis 支持的索引器126查找的分析129索引分析129圖的遍歷130練習(xí) 12131第 16 章 布爾搜索135爬蟲(chóng)解決方案135信息檢索137布爾搜索138練習(xí) 13139Comparable 和 Comparator 接口141擴(kuò)展部分143第 17 章 排序145插入排序146練習(xí) 14148合并排序的分析149基數(shù)排序151堆排序153有界堆155空間復(fù)雜性156
Allen B. Downey是奧林工程學(xué)院計(jì)算機(jī)科學(xué)領(lǐng)域的教授,曾經(jīng)在韋爾斯利學(xué)院、科爾比學(xué)院和伯克利大學(xué)執(zhí)教。他擁有伯克利大學(xué)計(jì)算機(jī)科學(xué)博士學(xué)位及麻省理工學(xué)院碩士和學(xué)士學(xué)位。他編寫(xiě)的其他書(shū)籍有:《Think Java》、《Think Python》、《Think Stats》和《Think Bayes》。
本書(shū)作者強(qiáng)調(diào)實(shí)踐知識(shí)和技能勝過(guò)理論,在書(shū)中為你展示了怎樣使用數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)有效的算法,并分析和測(cè)試了算法的性能。在本書(shū)中你將探索Java集合框架(JCF)中重要的類,它們是如何實(shí)現(xiàn)的,以及如何執(zhí)行。書(shū)中的每一章都提供了動(dòng)手練習(xí)及其在線測(cè)試代碼。本書(shū)主要內(nèi)容有:學(xué)習(xí)使用列表和映射等數(shù)據(jù)結(jié)構(gòu)并理解它們是如何工作的。構(gòu)建一個(gè)應(yīng)用程序,用于讀取維基百科頁(yè)、解析頁(yè)面內(nèi)容并導(dǎo)航結(jié)果樹(shù)。通過(guò)分析代碼預(yù)測(cè)其運(yùn)行時(shí)間和所需的內(nèi)存空間。分別使用哈希表和二叉搜索樹(shù)編寫(xiě)實(shí)現(xiàn)Map接口的類。創(chuàng)建一個(gè)簡(jiǎn)單的Web搜索引擎,包括一個(gè)網(wǎng)絡(luò)爬蟲(chóng)、一個(gè)存儲(chǔ)Web頁(yè)面內(nèi)容的索引器和一個(gè)返回用戶查詢結(jié)果的檢索器。