数组与列表之间的转换

JavaBeginner
立即练习

介绍

数组是 Java 中广泛使用的线性数据结构,用于存储数据集合。由于元素在内存中是连续分配的,因此可以通过索引随机访问数组中的任何元素。另一方面,List 接口提供了一种维护有序数据集合的方式,并由 ArrayList 和 LinkedList 等类实现。在本实验中,我们将学习如何使用 Java 中的各种方法将数组转换为列表,以及将列表转换为数组。

使用 asList() 方法将数组转换为列表

Arrays 类的 asList() 方法可用于将数组转换为列表。它以数组作为参数,并返回其元素的列表。我们将按照以下步骤使用 asList() 方法将数组转换为列表:

  • 创建一个字符串数组和一个整数数组,并为其初始化值
  • 使用 Arrays.asList() 方法将数组转换为列表
  • 打印列表
import java.util.Arrays;
import java.util.List;

public class ArrayToList {
    public static void main(String[] args) {
        // Step 1: Converting Array to List using asList() Method
        // Creating a string array
        String[] strArr = {"this", "is", "a", "string", "array"};
        // Creating an integer array
        Integer[] intArr = {2, 3, 5, 7, 11, 13, 17};
        // Converting arrays to lists using asList() method
        List<String> strList = Arrays.asList(strArr);
        List<Integer> intList = Arrays.asList(intArr);
        // Printing the lists
        System.out.println("Array to List using asList() Method: ");
        System.out.println(strList);
        System.out.println(intList);
    }
}

要运行代码,请打开终端,导航到项目文件夹并输入以下命令:javac ArrayToList.java && java ArrayToList

使用 Collections.addAll() 方法将数组转换为列表

Collections.addAll() 方法可用于将数组的所有元素添加到列表中。我们首先需要创建一个空列表,然后将现有数组和新列表作为参数传递给此方法。我们将按照以下步骤使用 Collections.addAll() 方法将数组转换为列表:

  • 创建一个字符串数组和一个整数数组,并为其初始化值
  • 使用 ArrayList 类创建相应数据类型的空列表
  • 使用 Collections.addAll() 方法将数组的元素添加到列表中
  • 打印列表
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ArrayToList {
    public static void main(String[] args) {
        // Step 2: Converting Array to List using Collections.addAll() Method
        // Creating a string array
        String[] strArr = {"this", "is", "a", "string", "array"};
        // Creating an integer array
        Integer[] intArr = {2, 3, 5, 7, 11, 13, 17};
        // Creating empty lists of the corresponding data types
        List<String> strList = new ArrayList<String>();
        List<Integer> intList = new ArrayList<Integer>();
        // Using the Collections.addAll() method to add the elements of the arrays to the lists
        Collections.addAll(strList, strArr);
        Collections.addAll(intList, intArr);
        // Printing the lists
        System.out.println("Array to List using Collections.addAll() Method: ");
        System.out.println(strList);
        System.out.println(intList);
    }
}

要运行代码,请打开终端,导航到项目文件夹并输入以下命令:javac ArrayToList.java && java ArrayToList

使用 Guava 的 Lists.newArrayList() 方法将数组转换为列表

Guava 库中的 Lists.newArrayList() 方法也可以用于将数组转换为 ArrayList。我们将按照以下步骤使用 Lists.newArrayList() 方法将数组转换为列表:

  • 创建一个字符串数组和一个整数数组,并为其初始化值
  • 使用 Lists.newArrayList() 方法将数组转换为 ArrayList
  • 打印 ArrayList
import com.google.common.collect.Lists;
import java.util.List;

public class ArrayToList {
    public static void main(String[] args) {
        // Step 3: Converting Array to List using Guava's Lists.newArrayList() Method
        // Creating a string array
        String[] strArr = {"this", "is", "a", "string", "array"};
        // Creating an integer array
        Integer[] intArr = {2, 3, 5, 7, 11, 13, 17};
        // Converting arrays to ArrayLists using Guava's Lists.newArrayList() method
        List<String> strList = Lists.newArrayList(strArr);
        List<Integer> intList = Lists.newArrayList(intArr);
        // Printing the ArrayLists
        System.out.println("Array to List using Guava's Lists.newArrayList() Method: ");
        System.out.println(strList);
        System.out.println(intList);
    }
}

要运行代码,请打开终端,导航到项目文件夹并输入以下命令:javac ArrayToList.java && java ArrayToList

编写自定义方法将数组转换为列表

我们也可以编写自己的方法将数组转换为列表。我们将使用 List 接口的 add() 方法将数组中的元素添加到列表中。我们将按照以下步骤编写自己的方法:

  • 编写一个方法,该方法以字符串数组作为参数并返回字符串列表
  • 在方法内部创建一个空的 ArrayList
  • 遍历数组并使用 add() 方法将每个元素添加到 ArrayList
  • 返回 ArrayList
import java.util.ArrayList;
import java.util.List;

public class ArrayToList {
    // Step 4: Writing our own method to convert Array to List
    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) {
        // Creating a string array
        String[] strArr = {"this", "is", "a", "string", "array"};
        // Converting array to list using our own method
        List<String> strList = arrayToList(strArr);
        // Printing the list
        System.out.println("Array to List using our own method: ");
        System.out.println(strList);
    }
}

要运行代码,请打开终端,导航到项目文件夹并输入以下命令:javac ArrayToList.java && java ArrayToList

使用 toArray() 方法将列表转换为数组

toArray() 方法可用于将列表转换为数组。它以数组作为参数,并返回包含列表元素的数组。我们将按照以下步骤使用 toArray() 方法将列表转换为数组:

  • 创建一个 ArrayList 并向其中添加元素
  • 使用 toArray() 方法将 ArrayList 转换为数组
  • 打印数组
import java.util.ArrayList;
import java.util.List;

public class ArrayToList {
    public static void main(String[] args) {
        // Step 5: Converting List to Array using toArray() Method
        // 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 ArrayList to array using toArray() method
        String[] strArr = strList.toArray(new String[0]);

        // Printing the array
        System.out.println("List to Array using toArray() Method: ");
        for(int i = 0; i <= strArr.length - 1; i++)
            System.out.print(strArr[i] + " ");
    }
}

要运行代码,请打开终端,导航到项目文件夹并输入以下命令:javac ArrayToList.java && java ArrayToList

使用 Guava 的 Iterables.toArray() 方法将列表转换为数组

Guava 库中的 Iterables.toArray() 方法也可以用于将列表转换为数组。我们将按照以下步骤使用 Iterables.toArray() 方法将列表转换为数组:

  • 创建一个 ArrayList 并向其中添加元素
  • 使用 Iterables.toArray() 方法将 ArrayList 转换为数组
  • 打印数组
import com.google.common.collect.Iterables;
import java.util.ArrayList;
import java.util.List;

public class ArrayToList {
    public static void main(String[] args) {
        // Step 6: Converting List to Array using Guava's Iterables.toArray() Method
        // 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 ArrayList to array using Guava's Iterables.toArray() method
        String[] strArr = Iterables.toArray(strList, String.class);

        // Printing the array
        System.out.println("List to Array using Guava's Iterables.toArray() Method: ");
        for(int i = 0; i <= strArr.length - 1; i++)
            System.out.print(strArr[i] + " ");
    }
}

要运行代码,请打开终端,导航到项目文件夹并输入以下命令:javac ArrayToList.java && java ArrayToList

编写自定义方法将列表转换为数组

我们也可以编写自己的方法将列表转换为数组。我们将遍历列表并使用 get() 方法获取每个元素,然后使用数组索引将其添加到数组中。我们将按照以下步骤编写自己的方法:

  • 编写一个方法,该方法以字符串列表作为参数并返回字符串数组
  • 在方法内部创建一个与列表大小相同的空字符串数组
  • 遍历列表并使用数组索引将每个元素添加到数组中
  • 返回数组
import java.util.ArrayList;
import java.util.List;

public class ArrayToList {
    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) {
        // Writing our own method to convert List to Array
        // 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 ArrayList to array using our own method
        String[] strArr = listToArray(strList);

        // Printing the array
        System.out.println("List to Array using our own method: ");
        for(int i = 0; i <= strArr.length - 1; i++)
            System.out.print(strArr[i] + " ");
    }
}

要运行代码,请打开终端,导航到项目文件夹并输入以下命令:javac ArrayToList.java && java ArrayToList

总结

在本实验中,我们探索了在 Java 中将数组转换为列表以及将列表转换回数组的各种方法。我们了解了如何使用 Arrays 类的 asList() 方法、Collections 类的 addAll() 方法以及 Guava 库中的 Lists.newArrayList() 方法将数组转换为列表。我们还学习了如何使用 toArray() 方法和 Guava 库中的 Iterables.toArray() 方法将列表转换为数组。最后,我们编写了自己的方法来实现这些转换。理解将数组转换为列表以及将列表转换为数组的不同方法,可以帮助我们充分利用这两种数据结构的潜力,并提升我们在 Java 中的编程技能。