HashMap and Object
最近做了一個關于數據統計的項目,頻繁地使用的HashMap來做存取,覺得特別不方便。每次取數據需要十分關注Map的key值是否寫對,經常因為key值某個字母大小寫的問題導致取出數據為null。同時因為需要存儲不同的對象,所以用Map<String, Object>的方式進行存儲,導致每次取數據的時候又需要對value進行強制轉換。
項目做完之后,有在思考,直接使用一個對象來存儲這些數據是否更方便。上網查了HashMap和Object的對比,下面簡要說明一下。
原文見:stackoverflow鏈接
HashMap優勢:
靈活
Object優勢:
- 對于相同數量的域,HashMap需要比Object占用更多的內存
- 對于基礎類型,HashMap強制進行裝箱
- HashMap創建和訪問比Object更慢
- HashMap可讀性差
總結:如果業務邏輯需要固定數據的域,那么擁有特殊目的的類明顯勝過一籌。如果域是通過動態配置的,那么使用HashMap更加明智。當然可以使用混合設計,一個對象使用HashMap作為內部存儲,暴露一些方法來增加更多的域。