Java 中数组和列表之间的转换
原文:https://www.studytonight.com/java-examples/converting-between-an-array-and-list-in-java
数组是用于存储数据集合的线性数据结构。数组被分配了连续的内存块,这允许我们使用数组的索引随机访问数组的任何元素。列表是 java.util 包的接口,帮助我们维护有序的数据集合。列表接口由ArrayList
、LinkedList
和其他几个类实现。在本教程中,我们将学习如何将数组转换为列表,并将列表转换回数组。
数组到列表的转换
使用 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] + " ");
}
这是一个字符串数组
摘要
数组是一种简单而有用的数据结构,用于存储类似类型的数据。列表是一个接口,像ArrayList
和LinkedList
这样的类实现了这个接口。ArrayList 是一个动态数组,克服了数组大小有限的问题。一个人必须知道如何将一个数组转换成一个列表,反之亦然,才能充分利用两者的潜力。asList()和 toArray()方法是最常用的方法。我们还实现了自己的方法,使用列表的 add()方法将数组转换为列表,使用列表的 get()方法将列表转换为数组。我们还可以定义通用方法来处理其他数据类型。