有时需要在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 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 strList = new ArrayList();
// 返回数组的列表表示
// 数组元素的任何更改也将更改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();
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
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。