Мне кажется, что нет возможности вставить элемент где-нибудь посередине класса Deque в O (1) раз. Я хочу сохранить ссылку на конкретный узел в deque, например, в хеш-таблице, и если мне нужно удалить этот узел, я просто перейду к его превью и поставлю prev.next = this.next и аналогично this.next.prev = prev и удалите этот текущий элемент.Java - вставка элемента в середине или в любом месте, кроме переднего/конца детекса
Но если у меня есть Deque, как
Deque<String> myDeque = new ArrayDeque<String>();
or
Deque<String> myDeque = new LinkedList<String>();
ни один из них не обеспечил бы это.
Есть ли альтернатива этому? Если мне нужно реализовать свой собственный Doubly-связанный список, есть ли способ, который я могу сделать, просто расширив то, что ArrayDeque уже делает, поэтому мне не нужно переписывать код для вставки и т. Д.? ... ну насколько я знаю ... я так не думаю: (: (
Что вы хотите реализовать, можете сделать проблему более шире? – constantlearner
Скопируйте + вставьте код 'java.util.LinkedList' и измените его по мере необходимости? – Dukeling
_I ** просто перейдите к его предыдущему ** и установите prev.next = this.next и аналогично this.next.prev = prev_ -> это все еще O (n) производительность, поскольку вам нужно итерации, пока вы не найдете узел, который вы хотите удалить. В принципе, не так просто реализовать список с производительностью O (1) для добавления/удаления в середине. Если бы это было так легко, это было бы в JDK уже. Но вы можете попробовать :) – nkukhar