这两天遇到了一个十分头苦的问题。就是这个UnsupportedOperationException报错。
苦就苦在这个报错根本不是在真正错误的地方报错。
经过一顿百度,终于找到了一种解决办法。
我的错误原因:
直接使用Arrays.asList()方法将数组转成了list集合。导致后面的remove操作直接报了这个错误。我还一直在找remove的错误。
原来是底层转换出了问题。
我们调用Arrays的asList()方法将数组转换成List时返回的是Arrays的静态内部类ArrayList,它自身并未重写add()方法,而其父类AbstractList实现的add()方法只会抛出UnsupportedOperationException,导致我们调用Arrays的静态内部类ArrayList的add()方法时,实际调用的是只会抛出UnsupportedOperationException的AbstractList的add()方法,这就是异常出现的原因了。
解决办法:
自己重写一个数组转换list的方法:
public static <E> List<E> transferArrayToList(E[] array){
List<E> transferedList = new ArrayList<>();
Arrays.stream(array).forEach(arr -> transferedList.add(arr));
return transferedList;
}
这样转换成的list再执行其他操作的时候就不会报这个错误啦。
参考文章:https://blog.csdn.net/liu_005/article/details/74091805
喜欢的朋友点个赞哦~~