我想要扩展HashMap
以添加putIfGreaterThan
方法,该方法基本上会检索给定键的值,并且如果新值大于旧值,则使用新值更新旧值。就像这样:
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
扩展了 HashMap<String, Double>
并添加了上述方法 - 我只是扩展了 HashMap
而不是 LinkedHashMap
。这将不允许我在实例化 LinkedHashMap
时访问该方法。我曾考虑修改原始 HashMap 类的源代码(通过添加
putIfGreaterThan
方法),但是我无法修改源代码,除非反编译整个类(当我尝试这样做时,我会得到很多其他错误,因此我认为仅仅扩展 HashMap
类会更容易,但这样做意味着我不能在 HashMap
和 LinkedHashMap
上使用 putIfGreaterThan
方法)。此外,如果我将该方法添加到原始类中,任何人都可以在任何
HashMap
(即使 map 包含两个字符串)上调用此方法,但是该方法仅适用于包含 String 和 Double 或 String 和 Int 的 HashMap。因此,我认为更有意义的是扩展原始类并使用与 String 和 Double 的 HashMap 相关的方法自定义当前类。有什么建议吗?
谢谢
if (containsKey(key ) != true)
,而不是直接使用if (! containsKey(key))
? - Lew Bloch