2016-07-13 4 views
0

Я хочу реализовать пользовательский LinkedHashMap, который имеет еще несколько методов/некоторые из них отличаются от LinkedHashMap. Я думал о том, чтобы сделать это за LinkedHashMap и внести изменения в реализацию для всего, что я хочу, а для остальных - просто вызвать методы из LHM.Эффективный способ реализации пользовательского LinkedHashMap

Это эффективный? Что-то вроде:

public class CustomLHM<K, V> implements Map<K, V>{ 

    private final HashMap<K, V> entries; 

    public CustomLHM() { 
     entries = new LinkedHashMap<K, V>(); 
    } 

SO для методов, таких как containsKey, containsValue ... Я бы просто сделать обратный entries.containsKey (ключ), поэтому в основном только вызывающего метод из уже Java реализовано LinkedHashMap. Мой вопрос ... есть ли лучший способ сделать это? Более эффективный способ его реализации?

Является ли это более эффективным, если я сам реализую его с базовыми структурами, такими как фактическая реализация LHM?

+0

Почему не _extend_ 'LinkedHashMap '? –

+0

@JimGarrison бить меня к нему :-) – Mureinik

+0

я застрял на просто реализует через интерфейс 'Map' поэтому я не могу изменить определение – Mocktheduck

ответ

0

Это делегат шаблон, делегирующий все вызовы в одно поле.

Совет:

Если IDE не может сделать это для вас, первое переопределение, а затем вызвать переопределение в среде IDE все методы, заменить «супер». с «записями».

Эффективность - это не вопрос, особенно с JIT-компилятором.

Как и в последнем компиляторе java, HashMap был улучшен (ведра с наборами деревьев, на которые я верю), я бы воздержался от собственной реализации чего-то, нуждающегося в качестве качества продукции. Или лучше: не требуется техническое обслуживание.

Смежные вопросы