在java中,对list进行操作的时候,有时候会报错:java.lang.UnsupportedOperationException
image.pngimage.png
产生原因:
通过代码可以看到,这个list是由数组转换而来的;
看下源码:
image.png
返回了一个ArrayList,但是此ArrayList是Arrays中的内部类:java.util.Arrays.ArrayList
image.png
可以看到,Arrays中的内部类:java.util.Arrays.ArrayList是继承自于AbstractList,再进AbstractList看:
image.png
可见,里面操作集合的方法,是不做任何操作,直接throw new UnsupportedOperationException();
并且,java.util.Arrays.ArrayList里面是没有重写这些方法的;
我们再去java.util.ArrayList中去看, 首先java.util.ArrayList也是继承自AbstractList,
但是在java.util.ArrayList中,重写了集合操作的各个方法
image.png
解决方案:
将由数组转换而来的集合,转换为java.util.ArrayList即可
image.png
以上,问题解决;
网友评论