双重链表

时间:2010-11-23 10:56:08

标签: java collections

您好 我想知道如何将我的对象从arrayList复制到双向链表? 我的DNode构造函数也是:

    public DNode(Object element, DNode prev, DNode next) {
    this.element = element;
    this.next = next;
    this.prev = prev;
}

即。当我编写这样的代码时,我的程序不起作用:

  DNode node = new DNode(pointList.get(0),null, null);

        for (int i = 1; i < pointList.size(); i++) {
        DNode dNode = new DNode(pointList.get(i), node, null);
        dList.addLast(dNode);
        }

我也写了双链表,里面有addAfter和addBefore方法,还有更多。

2 个答案:

答案 0 :(得分:9)

java.util.LinkedList是一个双重链接列表。

  

所有操作都可以按照预期的方式执行双向链接列表。

您可以通过将数组列表作为构造函数参数传递来创建它:

List linkedList = new LinkedList(arrayList);

更新java.util.LinkedListadd(index, element),与indexOf(..)相结合,应涵盖addBeforeaddAfter方法。如果您愿意,可以扩展LinkedList以添加这些方便的方法。

答案 1 :(得分:0)

假设链表末尾的元素的'next'属性为0:

ArrayList arrayList = new ArrayList();
int next = currentElement.next;
while(next != 0) {
    arrayList.add(currentElement);
    next = currentElement.next;
}

您也可以使用java.util.LinkedList,因为它是双向链表的内置表示。使用此类型意味着您可以将链接列表传递到ArrayList

的构造函数中