是否有任何(良好实现的)侵入式双链表类可用于Java?或者我应该自己做?Boost为C++提供了它:http://beta.boost.org/doc/libs/1_40_0/doc/html/boost/intrusive/list.html.
侵入列表是一个容器(在这种情况下)是元素中的next和prev指针,因此像replace和remove这样的典型列表操作可以直接定位到基本类而不是容器类.在某些情况下,侵入列表是最佳解决方案.
我试着给出一个恰当的例子.假设我有不同类型的X1和Y2所拥有的链表L list1和L list2.
Q类(没有任何关系或者不容易访问x1和Y2的接口,否则)需要做i)替换,ii)删除元素e的操作,它总是存在于某个地方,在list1 xor list2中取决于运行时状态,但该信息不会直接存储在任何地方.
使用intrussive列表Q可以将元素的引用存储到成员元素e,并且它总是指向正确的位置.
否则,您必须从几个明显更复杂的解决方法中选择一个或另一个. - 元素e的包装类和完成操作i和ii的其他方法.没有.
基本上,问题仍然不是性能而是架构复杂性.这也可以理解为一种共享对象情况,其中解决方案IL避免了对每个客户端Lx和Q的更新需求.
请注意,我没有必要与其他标准容器兼容.只是一个通用的侵入式lsit实现,具有与未知元素类一起使用的迭代,添加,删除和查找操作.
谢谢.