如何将字符串数组的元素添加到字符串数组列表中?

新手上路,请多包涵

我试图将一个字符串数组作为参数传递给 Wetland 类的构造函数;我不明白如何将字符串数组的元素添加到字符串数组列表中。

 import java.util.ArrayList;

public class Wetland {
    private String name;
    private ArrayList<String> species;
    public Wetland(String name, String[] speciesArr) {
        this.name = name;
        for (int i = 0; i < speciesArr.length; i++) {
            species.add(speciesArr[i]);
        }
    }
}

原文由 robinhood91 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 398
2 个回答

您已经为此内置了方法:-

 List<String> species = Arrays.asList(speciesArr);

注意:- 您应该使用 List<String> species 而不是 ArrayList<String> species

Arrays.asList returns a different ArrayList -> java.util.Arrays.ArrayList which cannot be typecasted to java.util.ArrayList .

那么你将不得不使用 addAll 方法,这不是很好。所以只需使用 List<String>

注意:- Arrays.asList 返回的列表是一个固定大小的列表。如果要向列表中添加内容,则需要创建另一个列表,然后使用 addAll 向其中添加元素。那么,您最好采用以下第二种方式:-

     String[] arr = new String[1];
    arr[0] = "rohit";
    List<String> newList = Arrays.asList(arr);

    // Will throw `UnsupportedOperationException
    // newList.add("jain"); // Can't do this.

    ArrayList<String> updatableList = new ArrayList<String>();

    updatableList.addAll(newList);

    updatableList.add("jain"); // OK this is fine.

    System.out.println(newList);       // Prints [rohit]
    System.out.println(updatableList); //Prints [rohit, jain]

原文由 Rohit Jain 发布,翻译遵循 CC BY-SA 3.0 许可协议

我更喜欢这个,

 List<String> temp = Arrays.asList(speciesArr);
species.addAll(temp);

原因是 Arrays.asList() 方法将创建一个固定大小的列表。因此,如果您直接将其存储到 species 中,那么 您将无法再添加任何元素,但它仍然不是只读的。 您当然可以编辑您的项目。所以将其纳入临时列表。

替代方案是,

 Collections.addAll(species, speciesArr);

在这种情况下,您可以添加、编辑、删除您的项目。

原文由 Ravi A 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题