2012-04-28 131 views
-2

嗨我有一個列表,讓我說這些項目{30 50 5 60 90 5 80}我想要做的是例如結合第三和第四元素,並有{30 50 65 90 5 80 }列表的組合項目

你能告訴我怎麼做?我正在使用java鏈接列表類。

+2

這是功課?如果是這樣,你應該這樣標記它 – ControlAltDel 2012-04-28 22:59:04

+0

它不是,我試圖做一個列表的東西,我不記得如何合併列表中的兩個元素 – 2012-04-28 23:00:50

+0

我去年在大學研究鏈接列表,現在我似乎無法輕易記住他們,我所做的是製作清單,並知道如何從中刪除項目 – 2012-04-28 23:04:57

回答

0
public class Main { 
    public static void main(String[] args) { 
     List<Integer> list = new LinkedList<>(); 
     list.add(30); 
     list.add(50); 
     list.add(5); 
     list.add(60); 
     list.add(90); 
     list.add(5); 
     list.add(80); 
     System.out.println(list); 
     combine(list, 2, 3); 
     System.out.println(list); 
    } 
    public static void combine(List<Integer> list, int indexA, int indexB) { 
     Integer a = list.get(indexA); 
     Integer b = list.get(indexB); 
     list.remove(indexB); // [30, 50, 5, 90, 5, 80] 
     list.add(indexA, a + b); // [30, 50, 65, 5, 90, 5, 80] 
     list.remove(indexB); // [30, 50, 65, 90, 5, 80] 
    } 
} 

輸出是:

[30, 50, 5, 60, 90, 5, 80] 
[30, 50, 65, 90, 5, 80] 

你需要檢查空值,避免NullPointerException

0

我通過你的鏈接列表倒是環(在頭節點開始)。我猜測每個LinkedList對象上都有一個nextNode屬性,它允許迭代器工作。當您得到索引2(值爲5)時,找到索引2的下一個節點(值爲60),並將該值添加到索引2(值爲5使其爲65)。然後找到指向值爲90的節點(調用此newNextNode)的索引3(值爲60)的nextNode,並將索引2(值爲5)的nextNode屬性重置到該節點。

0

鏈表不提供通過列表執行操作的方法,它只管理列表。爲你做這件事的唯一方法是從所述位置檢索元素並添加它們,然後從列表中刪除所述元素,然後使用索引插入新項目。