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

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

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

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

方法一:使用Object[] toArray() 方法

语法:

public Object[] toArray()

  • 由接口Collection和List中的toArray指定
  • 它在类AbstractCollection中重写了toArray
  • 返回包含此列表中所有元素的数组,按正确顺序排列。
// 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[])。在使用之前,我们需要对其进行类型转换为Integer对象。如果我们不进行类型转换,则会出现编译错误。请考虑以下示例:

// 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:错误:不兼容的类型:Object[]无法转换为Integer[]
        Integer[] objects = al.toArray(); 
                                      ^
1 error

因此,建议创建一个数组来存储列表中的元素,并将其作为参数传递给toArray()方法以存储元素(如果数组足够大)。否则,为此目的分配相同类型的新数组。

方法二:使用T[] toArray(T[] a)

// 将 list 转换为数组 arr[] 并返回相同。
// 如果 arr[] 不足够大,则为此目的分配
// 相同类型的新数组。
// T 表示通用。
public T[] toArray(T[] arr)

请注意,存在数组参数和数组返回值。传递数组的主要目的是告诉数组的类型。返回的数组与传递的数组类型相同。

  • 如果传递的数组具有足够的空间,则元素存储在此数组本身中。
  • 如果传递的数组没有足够的空间,则创建一个具有相同类型和给定列表大小的新数组。
  • 如果传递的数组有更多的空间,则首先用列表元素填充数组,然后填充空值。

如果a的运行时类型不是此列表中每个元素的运行时类型的超类型,则会抛出ArrayStoreException。

// Java程序将ArrayList转换为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元素复制到String数组[]中。

//返回列表中指定索引处的元素。
**public E get(int index)**
// Java程序将ArrayList转换为数组
//使用循环中的get()。
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:使用Java 8中的集合流API将其转换为基本int类型的数组

我们可以使用list和mapToInt()的streams()方法将ArrayList转换为基本数据类型int的数组

int[] arr = list.stream().mapToInt(i -> i).toArray();
// Java程序将ArrayList转换为数组
  
//使用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 

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程