Главный вопрос: Я ищу способ дать объекту в LinkedList ссылку на себя в списке, чтобы он мог (эффективно) удалиться из указанного списка (не сортируя по списку, который ищет сам. Я бы хотел, чтобы он просто отрезал себя от списка и связал предыдущий и следующий предметы вместе.).Как разрешить объект удалять себя из LinkedList в Java?
Менее Необходимые детали: я сделал разумное количество и прибегая к помощи ничего другого, кроме людей, консультирующих не использовать циклические ссылки не найден.
Я хотел бы сделать это, поскольку я разрабатываю игру, а в игровых объектах можно реализовать различные интерфейсы, которые позволяют им находиться в разных списках, которые зацикливаются в приоритетном порядке. Один объект может быть в контуре рисования, цикл, который одновременно запускает его через кадры его анимации, логический цикл с высоким приоритетом и логический цикл с низким приоритетом. Я хотел бы реализовать removeFrom | TypeOfLoop | метод в каждом соответствующем интерфейсе, так что если объект решает, что он больше не должен находиться в цикле, он может непосредственно удалить себя. Это позволяет объектам, которые делают фактический цикл достаточно простым.
Альтернативно, если нет способа сделать это, я подумываю о внедрении системы флагов, где в списке проверяется, будет ли каждый элемент удаляться на основе переменной внутри элемента. Однако мне не нравится идея сделать это достаточно, чтобы, возможно, просто создать собственный LinkedList, способный удалять по ссылке.
Хм, поэтому ваш объект должен сохранить ссылку на собственный узел после его добавления, я полагаю. Он по-прежнему вводит круговую ссылку, но на самом деле вы получаете время удаления O (1). Мне нравится! – greyfairer
Это выглядит отлично! Спасибо. – Casey
Вы можете сохранить его в 'Collection', добавив свои собственные методы' add' и 'offer', которые возвращают' Node' вместо того, чтобы взломать его. Возможно, 'nAdd' и' nOffer'. – OldCurmudgeon