在Java中将列表转换为数组

我如何将List转换为Java中的Array

检查下面的代码:

 ArrayList<Tienda> tiendas; List<Tienda> tiendasList; tiendas = new ArrayList<Tienda>(); Resources res = this.getBaseContext().getResources(); XMLParser saxparser = new XMLParser(marca,res); tiendasList = saxparser.parse(marca,res); tiendas = tiendasList.toArray(); this.adaptador = new adaptadorMarca(this, R.layout.filamarca, tiendas); setListAdapter(this.adaptador); 

我需要使用tiendasList的值填充数组tiendasList

或者:

 Foo[] array = list.toArray(new Foo[list.size()]); 

要么:

 Foo[] array = new Foo[list.size()]; list.toArray(array); // fill the array 

请注意,这只适用于引用types的数组。 对于原始types的数组,请使用传统的方法:

 List<Integer> list = ...; int[] array = new int[list.size()]; for(int i = 0; i < list.size(); i++) array[i] = list.get(i); 

Java 8中的另一种select:

 String[] strings = list.stream().toArray(String[]::new); 

我认为这是最简单的方法:

 Foo[] array = list.toArray(new Foo[0]); 

我遇到了解决这个代码片段。

 //Creating a sample ArrayList List<Long> list = new ArrayList<Long>(); //Adding some long type values list.add(100l); list.add(200l); list.add(300l); //Converting the ArrayList to a Long Long[] array = (Long[]) list.toArray(new Long[list.size()]); //Printing the results System.out.println(array[0] + " " + array[1] + " " + array[2]); 

转换工作如下:

  1. 它将创build一个新的Long数组,其大小为原始列表
  2. 它使用新创build的一个将原始ArrayList转换为一个数组
  3. 它把这个数组转换成一个Long数组(Long []),我恰当的命名为'array'

对于ArrayList,以下工作:

 ArrayList<Foo> list = new ArrayList<Foo>(); //... add values Foo[] resultArray = new Foo[list.size()]; resultArray = list.toArray(resultArray); 

取自此页的示例: http : //www.java-examples.com/copy-all-elements-java-arraylist-object-array-example

 import java.util.ArrayList; public class CopyElementsOfArrayListToArrayExample { public static void main(String[] args) { //create an ArrayList object ArrayList arrayList = new ArrayList(); //Add elements to ArrayList arrayList.add("1"); arrayList.add("2"); arrayList.add("3"); arrayList.add("4"); arrayList.add("5"); /* To copy all elements of java ArrayList object into array use Object[] toArray() method. */ Object[] objArray = arrayList.toArray(); //display contents of Object array System.out.println("ArrayList elements are copied into an Array. Now Array Contains.."); for(int index=0; index < objArray.length ; index++) System.out.println(objArray[index]); } } /* Output would be ArrayList elements are copied into an Array. Now Array Contains.. 1 2 3 4 5 

这是作品。 有点。

 public static Object[] toArray(List<?> a) { Object[] arr = new Object[a.size()]; for (int i = 0; i < a.size(); i++) arr[i] = a.get(i); return arr; } 

那么主要的方法。

 public static void main(String[] args) { List<String> list = new ArrayList<String>() {{ add("hello"); add("world"); }}; Object[] arr = toArray(list); System.out.println(arr[0]); } 

这(Ondrej的回答):

 Foo[] array = list.toArray(new Foo[0]); 

是我看到的最常见的成语。 那些build议你使用实际列表大小而不是“0”的人误解了这里发生的事情。 toArray调用不关心给定数组的大小或内容 – 它只需要它的types。 如果把“Foo.class”的实际types更清晰一些,会更好一些。 是的,这个成语生成了一个虚拟对象,但包括列表大小只是意味着你生成了一个更大的虚拟对象。 再一次,该对象不以任何方式使用; 这只是需要的types。

你可以使用toArray()api如下,

 ArrayList<String> stringList = new ArrayList<String>(); stringList.add("ListItem1"); stringList.add("ListItem2"); String[] stringArray = new String[stringList.size()]; stringArray = stringList.toArray(stringList); 

来自arrays的值是,

 for(String value : stringList) { System.out.println(value); } 
 tiendas = new ArrayList<Tienda>(tiendasList); 

所有集合实现都有一个重载构造函数,它接受另一个集合(模板<T>匹配)。 新实例通过传递的集合进行实例化。

尝试这个:

 List list = new ArrayList(); list.add("Apple"); list.add("Banana"); Object[] ol = list.toArray();