如何将string数组的元素添加到string数组列表?

我想把一个string数组作为parameter passing给Wetland类的构造函数; 我不明白如何将string数组的元素添加到string数组列表。

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 ,它不能被typesArrays.asList java.util.ArrayList

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

注意 : – Arrays.asList返回的列表是一个固定大小的列表。 如果你想添加一些东西到列表中,你需要创build另一个列表,然后使用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()方法将创build一个固定大小的List。 所以,如果你直接把它存储到物种中,那么你将无法添加更多的元素,但它不是只读的。 你一定可以编辑你的项目。 所以把它放进临时名单。

替代scheme是,

 Collections.addAll(species, speciesArr); 

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

你应该在尝试添加项目之前实例化你的ArrayList

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

以为我会join这个混合:

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

这是Intellibuild议的改变。

从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> 

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是Java中可用的将数组variables转换为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文档asList

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

Arrays.asList()方法只是返回Listtypes

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