您的位置:首页 > 编程语言 > Java开发

List集合中的add和remove的问题

2017-11-22 22:35 211 查看
这是一个刷新三观的问题:



是的,你没有看错,list竟然不支持remove方法,那么这是为什么呢???

原因在于:

1、上述代码中Arrays.asList(strings)返回的list并不是我们所认知的ArrayList,我们可以点击asList这个方法,查看他的源代码



他给我们返回的是一个Arrays这个类的一个内部类,这个类虽然和我们认知的ArrayList一样继承的都是AbstractList这个抽象类,但是这个内部类并没有重写add和remove这两个方法,而我们认知的ArrayList是重写了这两个方法



那么没有重写这两个方法的内部类,当然调用的是父类(AbstractList)中的这两个方法,我们在来看看AbstractList这个类中的这两个方法



看到这,我想大家都应该明白了,为什么直接使用add和remove这两个方法会报异常了吧

解决办法:

可以说非常庆幸的是ArrayList为我们提供了一个构造方法,参数刚好可以为那个内部类,这样一来就能转为我们认知的ArrayList类。即:List list1 = new ArrayList(Arrays.asList(strings));



4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java基础