2010-11-23 112 views
1

嗨 我想知道如何将我的对象从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方法,也还我已经写双向链表多得多。

回答

9

java.util.LinkedList是一个双向链表。

所有操作的执行情况与双链表一样。

你可以通过数组列表作为构造参数来创建它:

List linkedList = new LinkedList(arrayList); 

更新:java.util.LinkedListadd(index, element),其与indexOf(..)组合应该包括addBeforeaddAfter方法。如果您愿意,您可以扩展LinkedList以添加这些方便的方法。

+0

尼斯.... :)(愚蠢的15个字符牛..) – 2010-11-23 11:00:51

0

假设在链表末端的元素具有为0的“下一个”属性:

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

您还可以使用java.util.LinkedList因为这是一个双向链表的内置表示。使用这种类型意味着你可以将链表传递给ArrayList的构造函数