问题:
public class App { public static void main(String[] args) { String str = "212,12,12,dsd,dsds,ds"; List<String> list = Arrays.asList(str.split(",")); list.add("6565"); System.out.println("运行报错!"); } }
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at App.main(App.java:13)
解决:
public static void main(String[] args) { String str = "212,12,12,dsd,dsds,ds"; List<String> list = new ArrayList<>(Arrays.asList(str.split(","))); list.add("6565"); System.out.println("运行OK!"); }
原因:
Arrays.asList()返回的ArrayList继承自AbstractList,它仅支持那些不会改变数组大小的操作,所以任何对底层数据结构的尺寸进行修改的方法都会出现异常,Arrays.asList()返回固定尺寸的List。