趣味系列:List中remove方法

博客讨论了在Java中使用List的remove方法时遇到的一个意外情况。当尝试通过Integer对象移除元素时,由于Object类型的重载方法被调用,导致实际删除操作未执行。文章解释了这个问题的原因,并提醒开发者注意类型转换和方法选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天使用List的remove方法意外遇到一个有趣的现象。记录一下。

实例:

List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Integer index = 0;
list.remove(index);
//问此时list中的元素?

乍一看。list原结果是{"a", "b", "c"},删除第一个元素后,结果应该是{"b", "c"}。但此时结果还是{"a", "b", "c"}。删除失败了。那为什么呢?

remove有两个重构方法(见下图)。一个接收参数是int类型,一个是Object类型。

回到本题中,我们传入的Integer类型,而在java中Object是所有对象的父类。所有我们调用的是remove(Object o)这个方法,根本就还没来得及执行拆箱操作。

也是意外发现的,记录一下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值