java 扩展hashmap_java – 同时扩展HashMap和LinkedHashMap?

我想扩展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上调用此方法(即使映射包含两个字符串),但该方法仅适用于包含String和Double或String和Int的HashMap. .因此,我认为扩展原始类并使用与String和Double的HashMap相关的方法自定义当前类更有意义.

有什么建议?

谢谢

最佳答案 让你的自定义地图改为实现Map接口,并用它通过构造函数提供由类的用户提供的具体地图:

public class MyMap implements Map{

private final Map map;

public MyMap(Map map){

this.map = map;

}

public void putIfGreaterThan(String key, Double value ){...}

@Override

public int size() {

return map.size();

}

//inherited methods

}

这个类可以像这样使用:

MyMap map = new MyMap(new LinkedHashMap<>());

要么:

MyMap map = new MyMap(new HashMap<>());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值