一、List转换为数组的方法
在Java中,List和数组是常见的数据结构之一。在我们处理数据的时候,有时候需要将List转换成数组。这时候我们可以使用List提供的toArray()方法。该方法将List转换为数组。
ListmyList = new ArrayList<>(); myList.add("苹果"); myList.add("橘子"); myList.add("香蕉"); String[] myArray = myList.toArray(new String[0]);
上述代码中,我们将一个String类型的List转换成了一个String类型的数组。
这里需要注意的是,在toArray()方法中需要传入一个空数组。空数组的作用是确定返回的数组类型,如果传入一个非空数组,则返回的数组类型为传入类型,如果传入的数组长度不够,则需要重新创建一个数组,空数组则不需要重新创建,可以节省空间。
二、数组转换为List的方法
除了可以将List转换为数组,我们也可以将数组转换为List。这时候可以使用Arrays类提供的asList()方法。
String[] strArray = new String[] { "苹果", "橘子", "香蕉" }; ListstrList = Arrays.asList(strArray);
上述代码中,我们定义了一个String类型的数组,然后使用Arrays.asList()方法将该数组转换成一个List。
需要注意的是,asList()方法返回的List是一个不可变的List,不能进行add,remove等操作。如果需要对List进行修改,则需要将其转换成ArrayList等可变List后再进行操作。
三、List和数组的互相转换
当然,我们也可以通过循环遍历的方式将List转换成数组,或者通过Arrays.asList()方法将数组转换成List,但这些方法有时候比较麻烦。那有没有一种方法可以让我们在List和数组之间自由转换呢?答案是有的。
我们可以定义一个工具类,其中包含两个方法:一个将List转换成数组,另一个将数组转换成List。
public class ConvertUtils { public staticT[] listToArray(List list, T[] array) { return list.toArray(array); } public static List arrayToList(T[] array) { return new ArrayList<>(Arrays.asList(array)); } }
上述代码中,我们定义了一个方法listToArray,该方法接收一个List对象和一个数组对象,调用List的toArray()方法将List转换成数组。同时该方法使用了泛型,可以处理任意类型的List。
我们还定义了一个方法arrayToList,该方法接收一个数组对象,并使用Arrays.asList()方法将其转换成一个List对象。
这样,当我们需要将List转换成数组时,可以直接调用listToArray()方法,需要将数组转换成List时,可以直接调用arrayToList()方法。
四、总结
本文介绍了List与数组之间的相互转换方法,包括List提供的toArray()方法、Arrays类提供的asList()方法,以及手动实现的工具类的方法。这些转换方法在Java程序中经常用到,可以提高我们对数据的处理效率和便捷性。
完整代码如下:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ConvertUtils { public static void main(String[] args) { // List to array ListmyList = new ArrayList<>(); myList.add("苹果"); myList.add("橘子"); myList.add("香蕉"); String[] myArray = listToArray(myList, new String[0]); System.out.println(Arrays.toString(myArray)); // Array to list String[] strArray = new String[] { "苹果", "橘子", "香蕉" }; List strList = arrayToList(strArray); System.out.println(strList); } public static T[] listToArray(List list, T[] array) { return list.toArray(array); } public static List arrayToList(T[] array) { return new ArrayList<>(Arrays.asList(array)); } }