List集合中的add和remove的问题

这是一个刷新三观的问题:

这里写图片描述

是的,你没有看错,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));

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值