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

2022-08-31 14:40:05

我正在尝试将字符串数组作为参数传递给湿地类的构造函数;我不明白如何将字符串数组的元素添加到字符串数组列表中。

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

答案 1

您已经有内置的方法: -

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

注意:- 不应使用 。List<String> speciesArrayList<String> species

Arrays.asList返回一个不同的 ->不能将其类型转换为 。ArrayListjava.util.Arrays.ArrayListjava.util.ArrayList

然后你必须使用方法,这不是那么好。所以只需使用addAllList<String>

注意: - 返回的列表是固定大小的列表。如果要向列表中添加某些内容,则需要创建另一个列表,并使用 向其添加元素。因此,您最好采用第二种方式,如下所示: -Arrays.asListaddAll

    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]

答案 2

我更喜欢这个,

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

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

替代方案是,

Collections.addAll(species, speciesArr);

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