Есть ли какой-либо (хорошо реализованный) intrusive двойной связанный список классов (ов), доступных для Java? Или я должен делать свое? У Boost есть это для С++: http://beta.boost.org/doc/libs/1_40_0/doc/html/boost/intrusive/list.html.
Интрузивный список - это контейнер, имеющий (в данном случае) следующий и пред-указатели внутри элемента, поэтому типичные операции с списком, такие как замена и удаление, могут быть непосредственно нацелены на элементарный класс вместо класса контейнера. Есть некоторые определенные ситуации, где назойливый список является лучшим решением.
Я пытаюсь привести соответствующий пример. Предположим, что у меня есть связанные списки L list1 и L list2, принадлежащие разным типам классов X1 и Y2.
класс Q (которому нечего делать или не легко получить доступ к интерфейсам x1 и Y2 в противном случае) необходимо выполнить i) заменить, ii) удалить операцию для элемента e, которая всегда существует где-то в списке1 xor list2 в зависимости от состояния времени выполнения, но эта информация не сохраняется в любом месте.
С интрузивным списком Q может просто хранить ссылку на элемент на элемент элемента e, и он всегда указывает правильное место.
В противном случае вам придется выбирать из нескольких более сложных обходных решений одного или другого. - класс обертки для элемента e и дополнительные методы для завершения операций я и ii. Нет.
В принципе, вопрос по-прежнему не связан с производительностью, а с архитектурной сложностью. Это также можно понимать как один вид ситуации с общими объектами, где решение IL избегает необходимости обновления для каждого клиента Lx и Q.
Обратите внимание, что мне НЕ нужна совместимость с другими стандартными контейнерами. Просто общая интрузивная реализация lsit с повторением, добавлением, удалением и обнаружением операций, используемых с неизвестным классом элемента.
Спасибо.