問題:
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。
