以下方法可用于将ArrayList转换为Array:
方法1:使用Object[]toArray()方法
语法:
public Object[] toArray()
- 它由toArray在接口集合和接口列表中指定
- 它覆盖类AbstractCollection中的toArray
- 它返回一个数组,该数组按正确顺序包含此列表中的所有元素。
JAVA
// Java program to demonstrate working of // Objectp[] toArray() import java.io.*; import java.util.List; import java.util.ArrayList; class GFG { public static void main(String[] args) { List<Integer> al = new ArrayList<Integer>(); al.add( 10 ); al.add( 20 ); al.add( 30 ); al.add( 40 ); Object[] objects = al.toArray(); // Printing array of objects for (Object obj : objects) System.out.print(obj + " " ); } } |
10 20 30 40
注意:toArray()方法返回类型为Object(Object[])的数组。在用作整数对象之前,我们需要将其类型转换为整数。如果我们不进行类型转换,就会出现编译错误。考虑下面的例子:
JAVA
// A Java program to demonstrate that assigning Objects[] // to Integer[] causes error. import java.io.*; import java.util.List; import java.util.ArrayList; class GFG { public static void main(String[] args) { List<Integer> al = new ArrayList<Integer>(); al.add( 10 ); al.add( 20 ); al.add( 30 ); al.add( 40 ); // Error: incompatible types: Object[] // cannot be converted to Integer[] Integer[] objects = al.toArray(); for (Integer obj : objects) System.out.println(obj); } } |
输出:
19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error
因此,建议创建一个数组,将列表中的元素存储到其中,并将其作为参数传递到toArray()方法中,以存储足够大的元素。否则,将为此目的分配一个相同类型的新数组。
方法2:使用T[]toArray(T[]a)
// Converts a list into an array arr[] and returns same. // If arr[] is not big enough, then a new array of same // type is allocated for this purpose. // T represents generic. public T[] toArray(T[] arr)
请注意,这里有一个数组参数和数组返回值。传递数组的主要目的是告诉数组的类型。返回的数组与传递的数组类型相同。
- 如果传递的数组有足够的空间,则元素存储在该数组中。
- 如果传递的数组没有足够的空间,将使用给定列表的相同类型和大小创建一个新数组。
- 如果传递的数组有更多空间,则首先用列表元素填充数组,然后填充空值。
如果a的运行时类型不是此列表中每个元素的运行时类型的超类型,则会引发ArrayStoreException。
JAVA
// A Java program to convert an ArrayList to arr[] import java.io.*; import java.util.List; import java.util.ArrayList; class GFG { public static void main(String[] args) { List<Integer> al = new ArrayList<Integer>(); al.add( 10 ); al.add( 20 ); al.add( 30 ); al.add( 40 ); Integer[] arr = new Integer[al.size()]; arr = al.toArray(arr); for (Integer x : arr) System.out.print(x + " " ); } } |
10 20 30 40
注意:如果指定的数组为null,那么它将抛出NullpointerException。看见 这 例如
方法3:使用get()方法手动转换ArrayList
如果我们不想使用java内置的toArray()方法,我们可以使用这个方法。这是一种将所有ArrayList元素复制到字符串数组[]的手动方法。
// Returns the element at the specified index in the list. public E get(int index)
JAVA
// Java program to convert a ArrayList to an array // using get() in a loop. import java.io.*; import java.util.List; import java.util.ArrayList; class GFG { public static void main(String[] args) { List<Integer> al = new ArrayList<Integer>(); al.add( 10 ); al.add( 20 ); al.add( 30 ); al.add( 40 ); Integer[] arr = new Integer[al.size()]; // ArrayList to Array Conversion for ( int i = 0 ; i < al.size(); i++) arr[i] = al.get(i); for (Integer x : arr) System.out.print(x + " " ); } } |
10 20 30 40
方法4:使用Java8中集合的streams API转换为原始int类型的数组
我们可以使用list和mapToInt()的streams()方法将ArrayList
int[] arr = list.stream().mapToInt(i -> i).toArray();
JAVA
// Java program to convert a ArrayList to an array // using streams() import java.io.*; import java.util.List; import java.util.ArrayList; class GFG { public static void main(String[] args) { List<Integer> al = new ArrayList<Integer>(); al.add( 10 ); al.add( 20 ); al.add( 30 ); al.add( 40 ); // ArrayList to Array Conversion int [] arr = al.stream().mapToInt(i -> i).toArray(); for ( int x : arr) System.out.print(x + " " ); } } |
10 20 30 40
参考: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/ArrayList.html#toArray() 本文由 尼茨海伦德拉 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。