有时需要在java中将数组转换为List
或ArrayList
,这里将学习两种不同的方法来实现这一点。 由于List
是一个接口而ArrayList
是最流行的实现,因此转为List
与将Array
转换为ArrayList
相同。 当调用某些返回数组的第三方类,然后需要将它们更改为List
,或者向列表中添加更多数据时,就会出现这种情况。
Java将数组转为List
在Java中有两种内置方法可以将数组转换为List
。
Arrays.asList(T… a)
:这是在java中将数组转换为ArrayList
的最简单方法,但是此方法以ArrayList
的形式返回数组的基础表示。 返回的ArrayList
是固定大小的,任何修改它的尝试都会在运行时引发UnsupportedOperationException
异常。 此外,数组中的任何更改也将更改ArrayList
中的元素。Collections.addAll(ArrayList<T> strList, T[] strArr)
:这是将数组转换为ArrayList的最佳方法,因为数组数据被复制到列表中,并且都是独立的对象。 复制数组后,可以单独修改这两个对象。Collections
是Java Collections框架中一个非常有用的类,它提供了许多实用方法。
下面让我们看看这两种方法的用法。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ArrayToArrayList {
/**
* 此类显示将数组转换为ArrayList的不同方法
*
* @param args
*/
public static void main(String[] args) {
String[] strArr = {"1", "2", "3", "4"};
List<String> strList = new ArrayList<String>();
// 返回数组的列表表示
// 数组元素的任何更改也将更改arrayList元素
strList = Arrays.asList(strArr);
System.out.println("Original ArrayList from Arrays.asList()");
for (String str : strList)
System.out.print(" " + str);
//更改数组元素并查看效果是否也传播到列表中?
strArr[0] = "5";
System.out.println("Change in array effect on ArrayList");
for (String str : strList)
System.out.print(" " + str);
//下面的代码会抛出java.lang.UnsupportedOperationException,因为
// Arrays.asList()返回由指定数组支持的固定大小的列表。
//strList.add("5");
strList = new ArrayList<String>();
Collections.addAll(strList, strArr);
//更改数组和arraylist并检查它们是否独立?
strList.add("5");
strArr[0] = "1";
System.out.println("\nArray to ArrayList using Collections.addAll()");
for (String str : strList)
System.out.print(" " + str);
}
}
执行上面示例代码,得到以下结果 -
Original ArrayList from Arrays.asList()
1 2 3 4
Change in array effect on ArrayList
5 2 3 4
Array to ArrayList using Collections.addAll()
5 2 3 4 5