一、使用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循环可以比较灵活地进行操作,但是代码量较大。