Java Arraylist addAll()方法引发异常
为什么在执行以下代码时出现异常Java Arraylist addAll()方法引发异常,java,arrays,list,collections,arraylist,Java,Arrays,List,Collections,Arraylist,为什么在执行以下代码时出现异常 String[] array1 = {"A","B","C","D","E"}; String[] array2 = {"F","G","H","I"}; List<String> list = Arrays.asList(array1); list.addAll(Arrays.asList(array2)); //here getting exception 但是这个代码运行得很好 List<String> list
String[] array1 = {"A","B","C","D","E"};
String[] array2 = {"F","G","H","I"};
List<String> list = Arrays.asList(array1);
list.addAll(Arrays.asList(array2)); //here getting exception
但是这个代码运行得很好
List<String> list = new ArrayList<String>(Arrays.as.asList(array1));
list.addAll(Arrays.asList(array2));
List List=newarraylist(Arrays.as.asList(array1));
addAll(Arrays.asList(array2));
谢谢第一个案例
List<String> list = Arrays.asList(array1);
list.addAll(Arrays.asList(array2));
List<String> list = new ArrayList<String>(Arrays.as.asList(array1));
这里您并不是直接引用列表
。您正在创建一个新的ArrayList
,并使用数组返回的列表数据.as.asList(array1)
,它不是一个不可修改的(就大小而言)。Arrays.asList()
这总是返回一个不可修改的列表。您是否阅读了数组的javadoc.asList()?实际上,数组返回的列表
是可修改的:您可以在其上调用.set()
方法。它的大小是固定的。@EtienMiret我的意思是添加新的元素,因为OP使用addAll方法。更新:)。+1谢谢suresh。现在已理解Arrays.asList将返回不可修改的列表。@Prabhakaran很高兴它能帮上忙。请记住,在大小方面不可修改:)。不客气。
List<String> list = new ArrayList<String>(Arrays.as.asList(array1));