繁体   English   中英

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

[英]How to add elements of a string array to a string array list?

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

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

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

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

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

Arrays.asList返回一个不同的ArrayList - > java.util.Arrays.ArrayList ,它不能被类型Arrays.asList 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]

我更喜欢这个,

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

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

替代方案是,

Collections.addAll(species, speciesArr);

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

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

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> 

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

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

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

species = Arrays.asList(speciesArr);

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

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

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

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

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

以下行将导致编译器错误

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

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

}

输出:

在此输入图像描述

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

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

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

List<String> species = Arrays.asList(speciesArr);
public class duplicateArrayList {


    ArrayList al = new ArrayList();
    public duplicateArrayList(Object[] obj) {

        for (int i = 0; i < obj.length; i++) {

            al.add(obj[i]);
        }

        Iterator iter = al.iterator();
        while(iter.hasNext()){

            System.out.print(" "+iter.next());
        }
    }

    public static void main(String[] args) {


    String[] str = {"A","B","C","D"};

    duplicateArrayList dd = new duplicateArrayList(str);

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM