【发布时间】:2016-07-13 07:08:28
【问题描述】:
我想实现一个自定义的LinkedHashMap,它有更多的方法/一些与LinkedHashMap 不同。我正在考虑通过LinkedHashMap 来实现它并为我想要的任何东西更改实现,其余的只需调用LHM 中的方法。
这样有效吗?比如:
public class CustomLHM<K, V> implements Map<K, V>{
private final HashMap<K, V> entries;
public CustomLHM() {
entries = new LinkedHashMap<K, V>();
}
对于像containsKey、containsValue 这样的方法,我只需要返回entrys.containsKey(key),所以基本上只是从已经实现的java 调用LinkedHashMap 中的方法。我的问题是......有没有更好的方法来做到这一点?一种更有效的实施方式?
如果我自己使用基本结构(如 LHM 的实际实现)来实现它会更有效吗?
【问题讨论】:
-
为什么不扩展
LinkedHashMap<K,V>? -
@JimGarrison 打败了我 :-)
-
我只能通过
Map接口实现,所以我无法更改定义 -
@NemanjaT 肯定
implements Map<K, V>隐含在extends LinkedHashMap<K, V>中? -
如果你想让
Map方法做一些不同的事情,你应该知道Liskov Substitution Principle。基本上,它声明任何是Map的东西都应该始终完全按照Map应该做的事情来做。如果您不想这样做,那么您的自定义类可以在内部使用Map而实际上本身不是Map。
标签: java performance dictionary