承接上篇,趁國慶假期整理筆記。上回覆蓋了動態加載、類加載器及 JDK/JRE 區別,本篇聚焦集合框架與設計模式兩大支柱主題。
Java 集合框架核心接口為 List(有序可重複)、Set(無序不可重複)、Map(鍵值對,Key 唯一)。常見實現類如 ArrayList、LinkedList、HashSet、HashMap 等。面試高頻題:Vector vs ArrayList、Hashtable vs HashMap。本質是「舊集合框架」(JDK 1.2 前,默認同步)與「新集合框架」(JDK 1.2+,默認非線程安全)的對決。
關鍵差異:
List 下統一 ArrayList/LinkedList。Collections.synchronizedXxx() 包裝。為何大刀闊斧移除鎖?技術演進受客觀環境驅動。Java 初衷是嵌入式開發(單線程、資源受限),類加載器設計為節省內存。隨著互聯網爆發,多線程成常態,舊框架「全加鎖」嚴重拖垮性能。Sun 曾主打 J2SE,卻因環境變化被 J2EE 掩蓋——技術細節最終服務於場景。
題外話:IT 巨頭更迭史(IBM→微軟→Google)印證「客觀環境變化決定大方向」。期待下一個巨頭來自亞洲。
GoF 23 種模式非銀彈,而是「一類問題的通用解法」。最佳學習路徑:
java.util.Observer/Observable 對應觀察者模式;java.io 流嵌套(BufferedReader(new FileReader(...)))是裝飾器模式教科書級應用。反向驗證:學模式能深化對類庫的理解。如原型模式必須搞懂 Cloneable 與 Object.clone():默認淺拷貝(引用共享),深拷貝需實現 Cloneable 並重寫 clone()(突破 protected 限制)。引用鏈較長時,序列化再反序列化(ObjectOutputStream/ObjectInputStream)是取巧且有效的深拷貝方案。
模式本質是前人經驗總結。代理模式例:Child 想買東西,Adult 代理實現 buy() 內部調用 Child.buy(),外部暴露 Adult.buy()。寫通這個流程,模式即透徹。
