原因
一个数组转换成 List,再clear报UnsupportedOperationException。
使用 Arrays.asList(arr) 转换的 List 并不能进行 add 和 remove 操作。
Arrays.asList(arr) 返回的类型是 Arrays$ArrayList 并不是 ArrayList,
Arrays$ArrayList 和 ArrayList 都继承 AbstractList,但是 AbstractList 中的 add 方法和 remove 方法都是直接抛出 UnsupportedOperationException,并没有直接实现。
ArrayList 重写了 add 方法和 remove 方法,能够进行对应的添加和删除操作,Aarrays$ArrayList 却没有去重写,所以此时调用 add 方法和 remove 方法会抛出 UnsupportedOperationException。
来自:寻梦的尕柳(https://www.jianshu.com/p/7f718d900111)
解决
用了 Arrays.asList(arr)后,又用了new ArrayList<>(前面转成Aarrays$ArrayList 的list);
比如
String[] origin = {"1","2","3"};
List<String> a = Arrays.asList(origin);
List<String> b = new ArrayList<>(a);
可能有更好的办法,但我没多了解。