6

我希望能够将参数输入的新条目添加到列表中。

例如:

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)中。

另外,另一个问题。

有没有一种更简洁的方法来添加项目列表而不是一个一个地添加它(同时使用相同的列表导入)?比如,{“生菜”、“牛奶”、“培根”等}?

泰。

4

3 回答 3

9

据我了解,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"));
于 2013-03-17T12:25:44.590 回答
4

好吧,您的代码做错了什么。您在方法中初始化了整个列表,在方法完成后,它就消失了(Java 中的指针)。此外,您在其自身上添加了列表,因此代码可能不是您想要做的。

您可能打算在方法内创建一个新列表并将所有项目添加到参数中的列表中。如果是这样,您不应该在从参数获得的列表中使用“new”。


实际上,在阅读了您的问题的标题后-

  1. 您需要一个现有列表 - 它不能与参数中的列表名称一起使用。我们称之为existingList。
  2. 在方法中获取列表后,不应在其上使用“new ArralyList”,因为它会使参数中的列表无效。

您的代码应如下所示:

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

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

    existingList.add(wholeList);
于 2013-03-17T12:23:05.823 回答
0

将值添加到列表的唯一“更干净”的方法是:

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

但我看到最佳答案已经说明了这一点。因此,您可以通过在方法之外创建一个数组作为全局私有变量来进一步清理它。此外,正如另一个答案所说,您应该有另一个单独的列表,该列表与参数列表的名称不同。这是一个需要库的示例:

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));
}

但我会避免这样做。

于 2017-07-28T19:23:38.763 回答