使用 HashMap 最大的好處在於可將其視為一個參數表。若你約定以固定格式的 HashMap 或實現類似功能的參數作為固定介面的執行參數,甚至可以把 HashMap 當作一個既有成員變數又有成員函數的動態對象。由於鍵是字串,維護和管理這個 HashMap 非常方便,還能輕鬆實現繼承和覆蓋、多重繼承,甚至類似腳本語言的 autobinding。當然,代理和轉換器變得極其簡單可靠。
根據我的測試,HashMap 讀寫時間大約等同於生成一個高品質隨機數的時間消耗,大概是一次函數調用的 10 倍。我在實現的數值算法中頻繁使用 HashMap 取代定義大量介面,實踐證實這些開銷相對於頻繁的浮點運算完全可以忽略。看看 JFC 就知道 Java2D Rendering 的配置也使用 HashMap,JFC 中很多地方都使用 Property。所以大家為了靈活性可以愉快地使用 HashMap,不是一般的爽。
順便提一句,別用 Hashtable,你會吐的。另外 clone 一個數據比 new 一個對象浪費時間得多。
在追求靈活架構的現代 Java 開發中,HashMap 是不可或缺的利器,合理使用能極大提升開發效率與系統擴展性。