Java中ArrayList.add报错UnsupportedOperationException
本文由 小茗同学 发表于 2016-08-31 浏览(5230)
最后修改 2016-08-31 标签:java list add 插入 报错 arraylist unsupportedoperationexception

问题描述

给一个使用Arrays.asList转换过来的list添加东西:

String[] array = "aa,bb,cc".split(",");
List<String> list = Arrays.asList(array);
list.add("dd"); // 这里会报错

结果:

java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(Unknown Source)
	at java.util.AbstractList.add(Unknown Source)

原因分析

并不是所有List的实现都支持add方法,比如由Arrays.asList()返回的List是“不可编辑”的,它不支持添加、删除等方法。

解决办法

Arrays.asList()返回的list复制一份再操作:

String[] array = "aa,bb,cc".split(",");
List<String> list = new ArrayList<String>(Arrays.asList(array)); // 复制一份
list.add("dd"); // 这里不报错

参考

http://stackoverflow.com/questions/5755477/java-list-add-unsupportedoperationexception