【问题标题】:Java - Adding List<String> from parameter to existing listJava - 将 List<String> 从参数添加到现有列表
【发布时间】:2025-12-29 12:50:12
【问题描述】:

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

例如:

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.

【问题讨论】:

  • 即使我不明白你的问题,关于你粘贴的 sn-p 我要说的是你不能将 List 本身添加到 List 中(通过 addAll 方法)。

标签: string list element add


【解决方案1】:

据我了解,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"));

【讨论】:

  • 如果我在问题的两行之间正确阅读,可能是您必须从itemsToAdd 列表中删除已经存在的项目,因为他只想添加其他项目。这可以在一个简单的循环中完成。
【解决方案2】:

嗯,你的代码做错了什么。 您在方法中初始化了整个列表,在方法完成后,它就消失了(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);

【讨论】:

  • 我理解了这个问题。认为我的提问是错误的。但我的意思是在运行该方法时添加一个新元素。例如。我有列表,当我运行该方法时,我可以将新元素添加到现有列表中。
【解决方案3】:

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

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

但我会避免这样做。

【讨论】: