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));