Iterator迭代器remove元素出现**UnsupportedOperationException**异常

无人久伴 提交于 2020-01-26 05:47:49

Iterator迭代器remove元素出现UnsupportedOperationException异常

今天在学习迭代器时,发现remove元素时出现UnsupportedOperationException异常。查阅别人的博客发现自己犯了一个错误。

由于我的list是有Arrays.asList(“kelly”,“jerry”,“helen”)得到的,这样得到的list跟java.util.arraylist中的list是不一样的。Arrays.asList(“kelly”,“jerry”,“helen”)返回的是Arrays内部的list,而不是java.util.ArrayList。

Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重新了这些方法,而Arrays的内部类ArrayList没有重写,所以会抛出异常

//AbstractList的源码
public E remove(int index) {
        throw new UnsupportedOperationException();
    }

在remove元素之前必须调用next方法,不然会出现 **java.lang.IllegalStateException**异常

参考博客:https://blog.csdn.net/qq_39416311/article/details/83688591

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!