异常:java.lang.UnsupportedOperationException
场景:迭代器删除集合中一元素
举例:
Integer num=2;
List<Integer> nums=Arrays.asList(1,2,3);
Iterator<Integer> iterator=nums.iterator();
while (iterator.hasNext()){
if(iterator.equals(num)) iterator.remove();
}
报错原因:
Arrays.asList 返回的ArraysList所在的包是 java.util.Arrays.ArraysList
new ArraysList 返回的ArraysList所在的包是 java.util.ArraysList
虽说都继承了AbstractList
但是Arrays里的ArraysList没有重写add 和 remove方法 所以直接调用会报错UnsupportedOperationException | | util.ArraysList有重写add和remove方法 |
![]() | ![]() | ![]() |
解决: 可以使用List<Integer> list=new ArrayList<>(nums);转为list后再进行迭代器删除