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

时间:2012-10-12 06:39:49

标签: java arrays

我正在尝试将字符串数组作为参数传递给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]);
        }
    }
}

11 个答案:

答案 0 :(得分:103)

你已经有了内置的方法: -

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

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

Arrays.asList会返回不同的ArrayList - &gt; java.util.Arrays.ArrayListjava.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]

答案 1 :(得分:14)

我更喜欢这个,

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

原因是Arrays.asList()方法将创建一个固定大小的List。因此,如果您直接将其存储到物种中,那么您将无法添加任何其他元素,仍然不是只读。您可以确定地编辑您的项目。所以把它带入临时名单。

替代方案是,

Collections.addAll(species, speciesArr);

在这种情况下,您可以添加,修改,删除商品。

答案 2 :(得分:10)

以为我会把这个添加到混合中:

Collections.addAll(result, preprocessor.preprocess(lines));

这是Intelli建议的更改。

来自javadocs的

Adds all of the specified elements to the specified collection.
Elements to be added may be specified individually or as an array.
The behavior of this convenience method is identical to that of
<tt>c.addAll(Arrays.asList(elements))</tt>, but this method is likely
to run significantly faster under most implementations.
 
When elements are specified individually, this method provides a
convenient way to add a few elements to an existing collection:
<pre>
Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");
</pre>

答案 3 :(得分:7)

在尝试添加项目之前,您应该实例化ArrayList

private List<String> species = new ArrayList<String>();

答案 4 :(得分:6)

Arrays.asList是Array和集合框架之间的桥梁,它返回一个由Array支持的固定大小List。

species = Arrays.asList(speciesArr);

答案 5 :(得分:3)

在Java 8中,这种语法大大简化,可以用来简洁地完成这种转换。

请注意,您需要将字段从具体实现更改为List界面,以便顺利运行。

public class Wetland {
    private String name;
    private List<String> species;
    public Wetland(String name, String[] speciesArr) {
        this.name = name;
        species = Arrays.stream(speciesArr)
                        .collect(Collectors.toList());
    }
}

答案 6 :(得分:2)

Arrays.asList()方法只返回List类型

char [] arr = { 'c','a','t'};    
ArrayList<Character> chars = new ArrayList<Character>();

要将数组添加到列表中,请先将其转换为列表,然后调用addAll

List arrList = Arrays.asList(arr);
chars.addAll(arrList);

以下行将导致编译器错误

chars.addAll(Arrays.asList(arr));

答案 7 :(得分:1)

Arrays.asList是Java中可用于将数组变量转换为List或Collection的便捷函数。为了更好地了解,请考虑以下示例:

package com.stackoverflow.works;

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

public class Wetland {
    private String name;
    private List<String> species = new ArrayList<String>();

    public Wetland(String name, String[] speciesArr) {
        this.name = name;
        this.species = Arrays.asList(speciesArr);
    }

    public void display() {
        System.out.println("Name: " + name);
        System.out.println("Elements in the List");
        System.out.println("********************");
        for (String string : species) {
            System.out.println(string);
        }
    }

    /*
     * @Description: Method to test your code
     */
    public static void main(String[] args) {
        String name = "Colors";
        String speciesArr[] = new String [] {"red", "blue", "green"};
        Wetland wetland = new Wetland(name, speciesArr);
        wetland.display();
    }

}

<强>输出:

enter image description here

答案 8 :(得分:1)

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

arraylist.addAll( Arrays.asList("mp3 radio", "presvlake", "dizalica", "sijelice", "brisaci farova", "neonke", "ratkape", "kuka", "trokut")); 

答案 9 :(得分:0)

使用asList()方法。来自java Doc asList

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

答案 10 :(得分:-2)

   rule "calcitonin evaluation"
     lock-on-active true
     salience 0
   when
     $p : Patient($labtestItem : labtests)
   then
     System.out.println($labtestItem.get("calcitonin"));
     modify($p){}
   end