Java 中数组和列表之间的转换

原文:https://www.studytonight.com/java-examples/converting-between-an-array-and-list-in-java

数组是用于存储数据集合的线性数据结构。数组被分配了连续的内存块,这允许我们使用数组的索引随机访问数组的任何元素。列表是 java.util 包的接口,帮助我们维护有序的数据集合。列表接口由ArrayListLinkedList和其他几个类实现。在本教程中,我们将学习如何将数组转换为列表,并将列表转换回数组。

数组到列表的转换

使用 Arrays.asList()方法

数组类的 asList() 方法提供了一种将数组转换为列表的简单方法。我们需要将数组作为参数传递给这个方法,它将返回数组元素的列表。

下面的代码演示了 asList()方法的工作原理。

public static void main(String args[])
{
    //Converting a string array
    String[] strArr = {"this", "is", "a", "string", "array"};
    List<String> strList = Arrays.asList(strArr);
    System.out.println(strList);

    //Converting an integer array
    Integer[] intArr = {2, 3, 5, 7, 11, 13, 17};
    List<Integer> intList = Arrays.asList(intArr);
    System.out.println(intList);
}

【这,是,a,字符串,数组】 【2,3,5,7,11,13,17】

使用 Collections.addAll()方法

java.util 包的 Collections 类有一个 addAll()方法,它会将数组的所有元素添加到一个列表中。我们首先需要创建一个空的列表,然后将现有的数组和新创建的列表作为参数传递给这个方法。方法签名如下所示。

Collections.addAll(target, source);

下面的代码演示了 addAll()方法的工作原理。

public static void main(String args[])
{
    //Converting a string array
    String[] strArr = {"this", "is", "a", "string", "array"};
    List<String> strList = new ArrayList<String>();
    Collections.addAll(strList, strArr);
    System.out.println(strList);

    //Converting an integer array
    Integer[] intArr = {2, 3, 5, 7, 11, 13, 17};
    List<Integer> intList = new ArrayList<Integer>();
    Collections.addAll(intList, intArr);
    System.out.println(intList);
}

【这,是,a,字符串,数组】 【2,3,5,7,11,13,17】

使用番石榴图书馆

番石榴是谷歌开发的一套开源库。它有一个 Lists.newArrayList() 方法,可用于将数组转换为ArrayList。下面的代码演示了它的工作原理。

public static void main(String args[])
{
    //Converting a string array
    String[] strArr = {"this", "is", "a", "string", "array"};
    List<String> strList = Lists.newArrayList(strArr);
    System.out.println(strList);

    //Converting an integer array
    Integer[] intArr = {2, 3, 5, 7, 11, 13, 17};
    List<Integer> intList = Lists.newArrayList(intArr);
    System.out.println(intList);
}

【这,是,a,字符串,数组】 【2,3,5,7,11,13,17】

写我们自己的方法

我们可以编写我们的方法,并从数组中创建一个列表。List 接口为我们提供了 add()方法,我们可以使用该方法将数组中的元素添加到列表中。下面的代码将字符串数组转换为列表。如果我们希望转换其他数据类型的数组,我们可以创建一个不同的方法,或者我们可以只使用泛型方法

public static List<String> arrayToList(String[] strArr)
{
    List<String> strList = new ArrayList<String>();
    for(int i = 0; i <= strArr.length - 1; i++)
        strList.add(strArr[i]);
    return strList;
}

public static void main(String args[])
{
    //Converting a string array
    String[] strArr = {"this", "is", "a", "string", "array"};
    List<String> strList = arrayToList(strArr);
    System.out.print(strList);
}

【这,是,一,串,阵】

列表到数组的转换

使用 toArray()方法

toArray()方法提供了一种将列表转换为数组的简单方法。下面的代码演示了它的工作原理。

public static void main(String args[])
{
    //Creating an ArrayList
    List<String> strList = new ArrayList<String>();
    strList.add("this");
    strList.add("is");
    strList.add("a");
    strList.add("string");
    strList.add("array");

    //converting to array
    String[] strArr = strList.toArray(new String[0]);
    for(int i = 0; i <= strArr.length - 1; i++)
        System.out.print(strArr[i] + " ");
}

这是一个字符串数组

使用番石榴图书馆

在前一节中,我们看到了如何使用番石榴库将数组转换为列表。它还提供了 toArray() 方法,可用于将列表转换回数组。

public static void main(String args[])
{
    //Creating an ArrayList
    List<String> strList = new ArrayList<String>();
    strList.add("this");
    strList.add("is");
    strList.add("a");
    strList.add("string");
    strList.add("array");

    //converting to array
    String[] strArr = Iterables.toArray(strList, String.class);
    for(int i = 0; i <= strArr.length - 1; i++)
        System.out.print(strArr[i] + " ");
}

这是一个字符串数组

写我们自己的方法

我们还可以定义自己的方法,将列表转换为数组。我们将循环遍历列表,使用 get() 方法获取每个元素,并使用数组索引将其添加到数组中。我们可以为不同的数据类型定义不同的方法,或者我们可以简单地使用泛型方法。

public static String[] listToArray(List<String> strList)
{
    String[] strArr = new String[strList.size()];
    for(int i = 0; i <= strList.size() - 1; i++)
        strArr[i] = strList.get(i);
    return strArr;
}

public static void main(String args[])
{
    //Creating an ArrayList
    List<String> strList = new ArrayList<String>();
    strList.add("this");
    strList.add("is");
    strList.add("a");
    strList.add("string");
    strList.add("array");

    //converting to array
    String[] strArr = listToArray(strList);
    for(int i = 0; i <= strArr.length - 1; i++)
        System.out.print(strArr[i] + " ");
}

这是一个字符串数组

摘要

数组是一种简单而有用的数据结构,用于存储类似类型的数据。列表是一个接口,像ArrayListLinkedList这样的类实现了这个接口。ArrayList 是一个动态数组,克服了数组大小有限的问题。一个人必须知道如何将一个数组转换成一个列表,反之亦然,才能充分利用两者的潜力。asList()和 toArray()方法是最常用的方法。我们还实现了自己的方法,使用列表的 add()方法将数组转换为列表,使用列表的 get()方法将列表转换为数组。我们还可以定义通用方法来处理其他数据类型。