转载自第一代码:https://www.diyidaima.com/java/79.html
List list= Arrays.asList(reports);//reports是数组
在Android里使用如上代码进行数组转化为List,然后进行List的remove、add或clear等都会出现java.lang.UnsupportedOperationException异常:
java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:638)
at java.util.AbstractList$SimpleListIterator.remove(AbstractList.java:75)
at java.util.AbstractList.removeRange(AbstractList.java:658)
at java.util.AbstractList.clear(AbstractList.java:466)
这是由于:
Arrays.asLisvt() 返回java.util.Arrays A r r a y L i s t , 而 不 是 A r r a y L i s t 。 A r r a y s ArrayList, 而不是ArrayList。Arrays ArrayList,而不是ArrayList。ArraysArrayList和ArrayList都是继承AbstractList,remove,add等 metho在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(int),add(int)等,所以throw UnsupportedOperationException。
解决方法是使用Iterator,或者转换为ArrayList
List list = Arrays.asList(a[]);
List arrayList = new ArrayList(list);