Java 数组到ArrayList的转换

Java 数组到ArrayList的转换

数组 是一个元素的集合,可以是原始数据类型,也可以是对象。Java中的数组在本质上是静态的,而 ArrayLists则 只能将元素存储为对象。Java中的ArrayLists,与数组不同,在本质上是动态的。ArrayList是java.util包中的一个集合类,实现了java.util.List接口。

一个数组可以通过以下方法转换为ArrayList。

  1. 使用ArrayList.add()方法,手动添加ArrayList中的数组元素。该方法包括创建一个新的ArrayList,并使用add()方法将给定数组的所有元素添加到新创建的ArrayList中。

语法:

public void add(int index, E element)

参数:此函数接受2个强制性参数。

  • index – 要插入指定元素的索引。
  • element – 要插入的元素。

返回:该方法不返回任何值

异常:如果索引超出范围,该方法会抛出IndexOutOfBoundsException

示例:

// Java program to illustrate conversion 
// of an array to an ArrayList
  
import java.util.Arrays;
import java.util.ArrayList;
  
class ArrayToArrayList {
    public static void func1(int arr[])
    {
        ArrayList<Integer> array_list = 
                new ArrayList<Integer>();
  
        // Using add() method to add elements in array_list
        for (int i = 0; i < arr.length; i++)
            array_list.add(new Integer(arr[i]));
        System.out.print(array_list);
    }
  
    public static void main(String[] args)
    {
  
        int array[] = { 1, 2, 3, 4, 5 };
        func1(array);
    }
}

输出:

[1, 2, 3, 4, 5]
  1. 使用java.utils.Arrays.asList()方法:该方法将数组转换为列表,然后将列表作为参数,用列表的值初始化一个新的ArrayList。

语法:

public static List asList(T[] a)

参数: 该方法接受一个强制参数T[] a,其中a是列表的后缀,T是数组的类型。

返回:该方法返回一个指定数组的列表视图。

示例:

// Java program to illustrate conversion
// of an array to an ArrayList
  
import java.util.Arrays;
import java.util.ArrayList;
  
class ArrayToArrayList {
    public static void func2(Integer arr[])
    {
        // Using Arrays.asList() method
        ArrayList<Integer> array_list = 
            new ArrayList<Integer>(Arrays.asList(arr));
        System.out.print(array_list);
    }
  
    public static void main(String[] args)
    {
  
        // Integer objects are used instead
        // of primitives for conversion to list
        Integer array[] = { new Integer(1),
                            new Integer(2),
                            new Integer(3),
                            new Integer(4),
                            new Integer(5) };
        func2(array);
    }
}

输出:

[1, 2, 3, 4, 5]
  1. 使用java.utils.Collections类的Collections.addAll()方法:该方法以要插入数组值的ArrayList为第一参数;以要使用其值的Array为第二参数。然后它将数组的值复制到ArrayList中。

语法:

public static boolean addAll(Collection c, T.. a)

参数:该方法接受2个强制性参数。

  • c – 这是一个集合,其中的元素将被插入。
  • a – 要插入c中的数组,类型为T

返回:如果调用后集合发生了变化,该方法返回 “true”,否则返回 “false”。

异常:该方法会抛出

  • 不支持的操作异常
  • 如果指定的集合为空,则抛出 **NullPointerException
  • llegalArgumentException 如果数组中的某个值的某些方面阻止它被添加到c中。

示例:

// Java program to illustrate conversion 
// of an array to an ArrayList
  
import java.util.Collections;
import java.util.ArrayList;
  
class ArrayToArrayList {
    public static void func3(String arr[])
    {
        ArrayList<String> array_list = new ArrayList<String>();
  
        // Using Collections.addAll() method
        Collections.addAll(array_list, arr);
        System.out.print(array_list);
    }
  
    public static void main(String[] args)
    {
  
        String array[] = { "ABC", "DEF", "GHI", "JKL" };
        func3(array);
    }
}

输出:

[ABC, DEF, GHI, JKL]
  1. 使用java.utils.Arrays类的Arrays.stream()方法:该方法创建一个数组值的顺序流。然后在collect()方法和流的帮助下,这些值被复制到ArrayList中。
    语法:
public static IntStream stream(T[] a)

参数:该方法接受一个强制参数’a’,它是要转换为T类型流的数组。

返回:该方法返回一个指定类型的数组流(这里是Int)。

解释:

使用Arrays.stream().collect()方法,在toList()方法的帮助下,使用java.util.stream.Collectors类将流转换为列表。

注意: 这种方法需要Java 8或更高版本。

示例:

// Java program to illustrate conversion 
// of an array to an ArrayList
  
import java.util.Arrays;
import java.util.ArrayList;
import java.util.stream.Collectors;
  
class ArrayToArrayList {
    public static void func4(String arr[])
    {
        // Using Arrays.stream.collect() method.
        ArrayList<String> array_list = (ArrayList<String>)
                    Arrays.stream(arr)
                          .collect(Collectors.toList());
        System.out.print(array_list);
    }
  
    public static void main(String[] args)
    {
  
        String array[] = { "ABC", "DEF", "GHI", "JKL" };
        func4(array);
    }
}

输出:

[ABC, DEF, GHI, JKL]
  1. 使用java.utils.List接口的List.of(Elements)方法:该方法将数组作为参数,然后创建一个数组值的不可变列表。然后将这个不可变的列表作为参数传递给创建一个新的ArrayList。

语法:

static {T} List{T} of(a)

参数: 该方法接受一个强制参数’a’,它是要转换的数组,T表示列表的元素类型(这个可以省略)。

返回:该方法返回一个包含指定元素的列表。

异常:如果数组为空,该方法会抛出一个NullPointerException

注意:该方法需要Java 9或更高版本。

示例:

// Java program to illustrate conversion 
// of an array to an ArrayList
  
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.stream.Collectors;
  
class ArrayToArrayList {
    public static void func5(String arr[])
    {
        // Using List.of() method.
        ArrayList<String> array_list = 
        new ArrayList<String>(List.of(arr));
        System.out.print(array_list);
    }
  
    public static void main(String[] args)
    {
        String array[] = { "ABC", "DEF", "GHI", "JKL" };
        func5(array);
    }
}

输出:

[ABC, DEF, GHI, JKL]

参考资料

  • https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html
  • https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html
  • https://docs.oracle.com/javase/9/docs/api/java/util/List.html

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程