Java 数组到数组列表的转换

Java 数组到数组列表的转换

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

Java中数组到数组列表的转换

方法1:使用Arrays.asList()方法

语法: public static List asList(T... a)
// Returns a fixed-size List as of size of given array. 
// Element Type of List is of same as type of array element type.
// It returns an List containing all of the elements in this 
// array in the same order. 
// T represents generics 

注意,有一个数组参数和List的返回值。

  • 返回一个由指定数组支持的固定大小的列表。
  • 返回的列表是可序列化的,并且实现了RandomAccess。
  • 由于返回的列表是固定大小的,因此我们不能在其中添加更多的元素,但是我们可以使用ArrayList类中定义的set(index, new Element)方法用新元素替换现有的元素。
// Java program to demonstrate conversion of
// Array to ArrayList of fixed-size.
import java.util.*;
 
class GFG
{
    public static void main (String[] args)
    {
        String[] geeks = {"Rahul", "Utkarsh",
                          "Shubham", "Neelam"};
 
        // Conversion of array to ArrayList
        // using Arrays.asList
        List al = Arrays.asList(geeks);
 
        System.out.println(al);
    }
}

输出:

[Rahul, Utkarsh, Shubham, Neelam]

如果我们向转换后的列表添加更多的元素呢?

由于返回的列表是固定大小的列表,我们不能添加更多的元素。尝试添加更多的元素会导致 UnsupportedOperationException。
考虑下面的例子。

// Java program to demonstrate error
// if we add more element(s) to
// a fixed-size List.
import java.util.*;
 
class GFG
{
    public static void main (String[] args)
    {
 
        String[] geeks = {"Rahul", "Utkarsh",
                          "Shubham", "Neelam"};
 
        // Conversion of array to ArrayList
        // using Arrays.asList
        List al = Arrays.asList(geeks);
        System.out.println(al);
 
        // Adding some more values to the List.
        al.add("Shashank");
        al.add("Nishant");
 
        System.out.println(al);
    }
}

输出:

[Rahul, Utkarsh, Shubham, Neelam]

运行时错误

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at GFG.main(File.java:16)

因此,建议创建新的ArrayList,并将 Arrays.asList(array reference) 作为参数传递给它(即作为ArrayList的构造参数)。
考虑以下例子:

// Java program to demonstrate how to add
// one or more element(s) to returned
// resizable List.
import java.util.*;
 
class GFG
{
    public static void main (String[] args)
    {
        String[] geeks = {"Rahul", "Utkarsh",
                          "Shubham", "Neelam"};
 
        List<String> al =
            new ArrayList<String>(Arrays.asList(geeks));
        System.out.println(al);
 
        // Adding some more values to the List.
        al.add("Shashank");
        al.add("Nishant");
 
        System.out.println("\nArrayList After adding two" +
                           " more Geeks: ");
        System.out.println(al);
    }
}
[Rahul, Utkarsh, Shubham, Neelam]

ArrayList After adding two more Geeks: 
[Rahul, Utkarsh, Shubham, Neelam, Nishant, Shashank]

&nbap;

方法二:使用Collections.addAll()方法

**Syntax: public static  boolean addAll(Collection c, T... a)**
// Adds all of the specified elements to the specified collection.
// Elements to be added may be specified individually or as an array.
// T is generics

注意,有一个集合参数 c ,其中有要插入的元素,数组参数 a 包含要插入 c 的元素
返回类型是布尔类型。
如果调用的结果使集合发生了变化,则返回true。如果集合 c 不支持add方法,则抛出UnsupportedOperationException;如果元素(或数组中的元素)的某些方面阻止它被添加到集合 c 中,则抛出IllegalArgumentException
考虑以下例子:

// Java program to demonstrate how to
// add all elements of array to arrayList.
import java.util.*;
 
class GFG
{
    public static void main (String[] args)
    {
        String[] geeks = {"Rahul", "Utkarsh",
                         "Shubham", "Neelam"};
 
        List<String> al = new ArrayList<String>();
 
        // adding elements of array to arrayList.
        Collections.addAll(al, geeks);
 
        System.out.println(al);
    }
}

输出:

[Rahul, Utkarsh, Shubham, Neelam]

将null添加到列表
注:如果指定的集合或指定的数组为null,则抛出NullpointerException。

// Adding null to a list
import java.util.*;
 
class GFG
{
    public static void main (String[] args)
    {
        String[] geeks = {"Rahul", "Utkarsh",
                         "Shubham", "Neelam"};
 
        List<String> al = new ArrayList<String>();
        Collections.addAll(null, geeks);
 
        System.out.println(al);
    }
}

在列表的末尾添加null

import java.util.*;
 
class GFG
{
    public static void main (String[] args)
    {
        String[] geeks = {"Rahul", "Utkarsh",
                          "Shubham", "Neelam"};
 
        List<String> al = new ArrayList<String>();
        Collections.addAll(al, null);
 
        System.out.println(al);
    }
}

运行时间错误

Exception in thread "main" java.lang.NullPointerException
    at java.util.Collections.addAll(Collections.java:5401)
    at GFG.main(File.java:11)

方法3:使用手工方法,用add()方法转换数组

如果我们不想使用java的内置方法,我们可以使用这个方法。这是一种将所有数组元素添加到List的手动方法。

**Syntax: public boolean add(Object obj)**
// Appends the specified element to the end of this list.
// Returns true.
// Java program to convert a ArrayList to
// an array using add() in a loop.
import java.util.*;
 
class GFG
{
    public static void main (String[] args)
    {
        String[] geeks = {"Rahul", "Utkarsh",
                          "Shubham", "Neelam"};
 
        List<String> al = new ArrayList<String>();
 
        // Array to ArrayList Conversion
        for (String geek : geeks)
            al.add(geek);
 
        System.out.println(al);
    }
}

输出:

[Rahul, Utkarsh, Shubham, Neelam]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程