在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]);
转换工作如下:
- 它将创build一个新的Long数组,其大小为原始列表
- 它使用新创build的一个将原始ArrayList转换为一个数组
- 它把这个数组转换成一个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();