2013-03-17 61 views
3

我希望能夠將新的條目參數輸入添加到列表中。Java - 從參數添加列表<String>到現有列表

例如:

public static void theList (List<String> wholeList) { 

    wholeList = new ArrayList<String>(); 
    wholeList.add("Lettuce"); 
    wholeList.add("Bacon"); 
    wholeList.add("Milk"); 

    wholeList.add(wholeList); <--------- error - addAll doesn't fix it. 

以上我試圖 'wholeList.add(wholeList)'。我打算做的是:無論額外(項目(從參數),當添加輸入來運行此方法)項目我需要添加,將被添加到'wholeList'。正如你所看到的,我有3個項目添加到列表:生菜,培根和牛奶。但是,如果我突然改變主意,並且想要添加另一個項目(通過參數),我可以簡單地將它添加到當前列表(wholeList)。

另外,還有一個問題。

是否有更好的方式來添加項目列表,而不是逐個添加它(同時使用相同的列表導入)?說,{「生菜」,「牛奶」,「培根」等)?

TY。

+0

即使我不明白你的問題,我不得不說你的代碼片段粘貼是你不能添加到列表本身(通過addAll方法)。 – Dario 2013-03-17 12:22:31

回答

5

據我瞭解,addAll()是你需要的一切:

List<String> someList = new ArrayList<String>(); 
List<String> itemsToAdd = new ArrayList<String>(); 
itemsToAdd.add("one"); 
itemsToAdd.add("two"); 
someList.addAll(itemsToAdd); 
// or use handy method which creates temporary list internally: 
someList.addAll(Arrays.asList("three", "four")); 
+0

如果我在問題的各行之間正確讀取,可能是因爲您只需要從'itemsToAdd'列表中刪除已存在的項目,因爲他只需要添加其他項目。這可以在一個簡單的循環中完成。 – Trinimon 2013-03-17 12:34:18

4

那麼,你的代碼做的非常錯誤。 您在方法內部初始化wholeList,並在方法結束後,它不見了(Java中的指針)。 另外,你自己添加了列表,所以代碼可能不是你想要做的。

您可能打算在方法中創建一個新列表,並將所有項目添加到參數列表中。 如果是這樣,你不應該在參數列表中使用「new」。


其實,讀你的問題的標題後 -

  1. 您需要現有列表 - 它不能與參數列表的名稱。我們稱之爲existingList。
  2. 當你得到方法列表後,你不應該上使用「新的ArralyList」,因爲它將從參數中刪除列表。

你的代碼應該看起來像:

public static void theList (List<String> wholeList) { 

    wholeList.add("Lettuce"); 
    wholeList.add("Bacon"); 
    wholeList.add("Milk"); 

    existingList.add(wholeList); 
+0

我明白這個問題。認爲我的提問是錯誤的。但是當我運行該方法時,我的意思是添加一個新元素。例如。我有這個列表,當我運行該方法時,我可以將新元素添加到現有列表中。 – Dembele 2013-03-17 12:26:23

0

唯一的「清潔劑」中添加值列表的方式將是:

wholelist.addAll(Arrays.asList("Lettuce", "Bacon", "Milk")); 

但是我看到最佳答案已經說明。所以,你可以通過在方法之外創建一個數組作爲全局私有變量來清理它。另外,正如另一個答案所說,你應該有另一個與參數列表不同的名字。這是需要有libaries一個例子:

import java.util.Arrays; 
import java.util.List; 
import java.util.ArrayList; 

public class Example{ 
    private List<String> globalList = new ArrayList<>(); 
    private String[] list = {"Bacon", "Lettuce", "Milk"}; 

    public static void theList (List<String> wholelist) { 
     wholelist.addAll(Arrays.asList(list)); 
     globalList.addAll(wholeList); 
    } 

如果你想使用wholeList作爲名稱的兩個列表,然後你可以改變globalList以上wholelist,則:

public static void theList (List<String> wholelist) { 
    this.wholelist.AddAll(wholelist); 
    this.wholelist.addAll(Arrays.asList(list)); 
} 

但我會避免這樣做。