Java中的ArrayList到Array的转换:toArray()方法

以下方法可用于将ArrayList转换为Array:

null

arraylist-to-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的数组

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主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享