问题描述
给一个使用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