📜  Java中的数组到 ArrayList 的转换

📅  最后修改于: 2022-05-13 01:55:20.661000             🧑  作者: Mango

Java中的数组到 ArrayList 的转换

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

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

  1. 使用 ArrayList.add() 方法在 ArrayList 中手动添加数组元素:此方法涉及创建一个新的 ArrayList 并使用 add() 方法将给定数组的所有元素添加到新创建的 ArrayList 中。
    Syntax: 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 array_list = 
                    new ArrayList();
      
            // 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]
    
  2. 使用Java.utils.Arrays 类的 Arrays.asList() 方法:该方法将数组转换为列表,然后将列表作为参数传递,以使用列表值初始化一个新的 ArrayList。
    Syntax: 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 array_list = 
                new ArrayList(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]
    
  3. 使用Java.utils.Collections 类的 Collections.addAll() 方法:该方法将要插入数组值的 ArrayList 作为第一个参数;以及其值将用作第二个参数的 Array。然后它将 Array 的值复制到 ArrayList 中。
    Syntax: public static boolean addAll(Collection c, T.. a)
    

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

    • c – 这是要插入元素的集合。
    • a – 要插入到 c 中的数组,类型为 T

    返回:如果集合因调用而改变,则该方法返回“true”,否则返回“false”。

    异常:方法抛出

    • 不支持的操作异常。
    • 如果指定的集合为 null,则NullPointerException
    • IllegalArgumentException如果数组中某个值的某些方面阻止它被添加到 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 array_list = new ArrayList();
      
            // 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]
    
  4. 使用Java.utils.Arrays 类的 Arrays.stream() 方法:此方法创建数组值的顺序流。然后在 collect() 方法和流的帮助下,将值复制到 ArrayList 中。
    Syntax: public static IntStream stream(T[] a)
    

    参数:该方法接受一个强制参数“a”,它是要转换为 T 类型流的数组
    Returns:该方法返回一个数组的指定类型的流(这里是Int)。

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

    注意:此方法需要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 array_list = (ArrayList)
                        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]
    
  5. 使用Java.utils.List 接口的 List.of(Elements) 方法:该方法将数组作为参数,然后创建数组值的不可变列表。然后将此不可变列表作为参数传递以创建新的 ArrayList,
    Syntax: 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 array_list = 
            new ArrayList(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 Java
  • https://docs.oracle.com/javase/8/docs/api/java Java
  • https://docs.oracle.com/javase/9/docs/api/ Java/util/List.html