Java 中 HashMap 和 Map 的差異
在 Java 中建立 Map 集合時,我們通常使用 HashMap 類別。但是,我們也可以將其宣告為 Map 介面。這就提出了一個問題:這兩種方法有什麼不同?
關鍵區別在於我們對物件的存取類型。使用 HashMap 建立一個具有 HashMap 介面的對象,而 Map 則透過 Map 介面提供相同的對象。在這兩種情況下,底層物件保持不變。
使用 Map 介面的優點是能夠更改底層實現,而不會破壞與使用它的程式碼之間的約定。如果映射被宣告為 HashMap,則實作中的任何變更都需要更新契約。
為了說明這一點,請考慮包含與子類別共用的內部對應的類別 Foo 的範例。如果 Foo 使用 HashMap 初始化,且子類別方法使用宣告的 HashMap 類型處理 things 和 moreThings,則將 Foo 變更為使用 TreeMap 會破壞程式碼。
但是,如果 Foo 將 things 和 moreThings 宣告為 Map 而不是HashMap,即使實作變更為 TreeMap,Foo 和子類別都不會受到影響。
因此,除非有特定原因使用特定實現,否則最好的做法是編寫最通用的介面( Java 地圖)。這種方法增強了靈活性並確保針對實施變更的彈性。
以上是在 Java 中什麼時候應該使用 `HashMap` 和 `Map`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!