• Tags , ,
  •         
  • www.breakyizhan.com
  •    

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

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

    Java中,将ArrayList转换为Array的toArray()方法

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

    句法:

     public Object [] toArray()
    • 它由接口Collection中的toArray指定 和接口列表
    • 它覆盖了AbstractCollection类中的Array
    • 它以正确的顺序返回一个包含此列表中所有元素的数组。
    // 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对象之前,我们需要将它转换为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);
        }
    }
    

    输出:

            Integer[] objects = al.toArray();
                                          ^
      required: Integer[]
      found:    Object[]
    1 error
    

    因此建议创建一个数组,List中的元素需要存储在该数组中,并将其作为参数传递给toArray()方法,以在元素足够大时存储元素。否则,为此分配一个相同类型的新数组。

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

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

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

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

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

    // 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的方法

    如果我们不想在构建的toArray()方法中使用java,我们可以使用此方法。这是复制所有ArrayList的手动方法 元素添加到String Array []中。

    //返回列表中指定索引处的元素。
    public E get(int index)
    // 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

     
    转载请保留页面地址:https://www.breakyizhan.com/java/4052.html