2010-11-23 154 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的構造函數