您的位置:

Java数组转List的方法

一、使用Arrays.asList()

Java提供了一种快速地将数组转换为List的方法,通过Arrays类的asList()方法可以将数组转换为List,这种方式十分简单方便。

String[] strArray = {"Java", "Python", "C++", "JavaScript"};
List<String> list = Arrays.asList(strArray);
System.out.println(list);

输出结果:

[Java, Python, C++, JavaScript]

但是需要注意的是,使用Arrays.asList()方法将数组转换为List后,返回的List是一个固定长度的List,即不能进行add()、remove()等操作。而且,当对这个List进行操作时,数组也会相应地改变。

例如:

String[] strArray = {"Java", "Python", "C++", "JavaScript"};
List<String> list = Arrays.asList(strArray);
list.add("PHP");
System.out.println(Arrays.toString(strArray));

输出结果:

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.base/java.util.AbstractList.add(AbstractList.java:153)
	at java.base/java.util.AbstractList.add(AbstractList.java:111)
	at JavaArrayToListDemo.main(JavaArrayToListDemo.java:9)

由于List是固定长度的,所以无法添加元素,所以会抛出UnsupportedOperationException异常。

二、使用Stream API

Java 8之后引入了Stream API,通过Stream API也可以将数组转换为List,使用的方式为:

String[] strArray = {"Java", "Python", "C++", "JavaScript"};
List<String> list = Arrays.stream(strArray).collect(Collectors.toList());
System.out.println(list);

输出结果:

[Java, Python, C++, JavaScript]

和使用Arrays.asList()相比较,Stream API的方式可以进行add()等操作,不会出现上述问题。使用Collectors.toList()方法可以把Stream流转换为List集合。

三、使用传统的for循环

如果不想使用Java 8的Stream API,也可以使用传统的for循环来遍历数组,将每个元素添加到List中。

String[] strArray = {"Java", "Python", "C++", "JavaScript"};
List<String> list = new ArrayList<>();
for (int i = 0; i < strArray.length; i++) {
    list.add(strArray[i]);
}
System.out.println(list);

输出结果:

[Java, Python, C++, JavaScript]

使用传统的for循环可以通过list.add()方法将元素逐个添加到List中,这种方式比较灵活,可以在添加元素时根据需要进行操作。

四、总结

以上三种方式都可以将数组转换为List,Arrays.asList()是比较简单方便的方式,但是需要注意返回的List是固定长度的。Stream API的方式相对比较灵活,可以进行add()等操作,也比较简洁。使用传统的for循环可以比较灵活地进行操作,但是代码量较大。