通过Arrays.asList(T… a)将数组转换为List,转换后的List只能进行查改,不能进行增删,否则就会跑出异常。
代码演示:
import java.util.Arrays;import java.util.List;/** * @ClassName ArrayToList * @Description TODO * @Author DD * @Date 2019/8/6 10:19 * @Version 5.0 **/public class ArrayToList { public static void main(String[] args) { String[] sArray = new String[5]; List list = Arrays.asList(sArray); // 添加一个元素 list.add("test"); System.out.println(list); }}
运行结果:
Exception in thread "main" java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at lottery.ArrayToList.main(ArrayToList.java:19)
这里在转换之后调用add方法时直接报了一个UnsupportedOperationException异常。
源码分析:
通过源码分析可以看到,Arrays.asList(sArray)方法返回的是Arrays类里面的一个静态内部类java.util.Arrays.ArrayList,java.util.Arrays.ArrayList类具有get、set、contains等方法,但是并没用重写add、remove方法,所以调用add方法时会报错!
其它做法:
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;/** * @ClassName ArrayToList * @Description TODO * @Author DD * @Date 2019/8/6 10:19 * @Version 5.0 **/public class ArrayToList { public static void main(String[] args) { //第一种 String[] sArray = new String[5]; List list = new ArrayList<>(Arrays.asList(sArray)); list.add("test"); System.out.println(list); //第二种 List list1 = new ArrayList(5); Collections.addAll(list1,sArray); list1.add("test"); System.out.println(list1); }}
关注
感谢阅读,如果这篇文章帮助了您,欢迎 点赞 ,收藏,关注,转发 哟。您的帮助是我们前行的动力,我们会提供更多有价值的内容给大家... 谢谢!