我想擴展HashMap
添加方法putIfGreaterThan
,它基本上檢索給定鍵的值,如果新值大於舊值,我們用新值更新舊值。就像這樣:同時擴展HashMap和LinkedHashMap?
public void putIfGreaterThan(String key, Double value)
{
if (containsKey(key) != true) {
put(key , value);
} else {
if (get(key) < value) {
System. out .println("Adding new value: " + value + " to map");
put(key , value);
} else {
System. out .println("Did not add value: " + value + " to map");
}
}
}
上面的程序工作正常 - 但我想這種方法添加到這兩個HashMap
和LinkedHashMap
。換句話說,如果有人實例:
HashMap hashmap = new HashMap();
他們應該能夠訪問方法:
hashmap.putIfGreaterThan();
如果有人實例:
LinkedHashMap linkedhashmap = new LinkedHashMap();
他們應該能夠訪問方法:
linkedhashmap .putIfGreaterThan();
如果我創建一個新的類,如下所示:
MyHashMap extends HashMap<String, Double>
並添加前面提到的方法 - 我只是延長HashMap
不LinkedHashMap
。如果我實例化LinkedHashMap
,這將不允許我訪問該方法。
我想修改原始HashMap類中的源代碼(通過添加方法putIfGreaterThan
),但是我無法修改源代碼,除非我解編整個類(並且當我嘗試這樣做時,我得到一堆其他的錯誤,所以我認爲只是擴大HashMap
類,但這樣做意味着我不能在HashMap
和LinkedHashMap
)上使用方法putIfGreaterThan
。
此外,如果我已經將方法添加到原始類中,則可以在任何HashMap
(即使該映射包含兩個字符串)上調用此方法,但該方法僅適用於包含String和Double的HashMap或者String和Int。因此,我認爲擴展原始類並使用與String和Double的HashMap
相關的方法定製當前類更有意義。
有什麼建議嗎?
謝謝
我建議使用成分。讓你的班級有一個hashmap,然後用你的邏輯包裝地圖的put方法。 – chatton
無法完成修改HashMap類本身的行爲,而不僅僅是您自己的自定義類,出於充分的理由:它會爲各地的Java應用程序引入安全噩夢。 – VGR
爲什麼冗餘'if(containsKey(key)!= true)'而不是直接的if(!containsKey(key))'? –