当ArrayList中装的是Integer类型的数据时remove方法不能根据数据值来移除数据了

当ArrayList中装的是Integer类型的数据时remove方法不能根据数据值来移除数据了

import java.util.ArrayList;
import java.util.List;

public class MyList {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(5);
        System.out.println("删除前=============");
        System.out.println(list);


        list.remove(5);
        System.out.println("删除后==============");
        System.out.println(list);
    }
}

我想删除数值为5的数据,代码运行报错?

https://img1.sycdn.imooc.com//climg/6307260d09b1f49e16720390.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

1.remove方法是删除位于集合中指定位置的数据,调用remove方法时,传递的参数是list集合的下标,在同学代码中remove方法传递的参数是5,而在list集合中没有下标为5的数据,所以代码会报数组越界异常,并且程序运行会终止;

2.如果同学想删除“5”,同学可以将第14行代码更改为:list.remove(2);

祝学习愉快!

  • 慕粉1555086949 提问者 #1

    remove还有一个可以根据元素来删除数据而不是下标,我想调用那一个的重载方法

    2022-08-25 16:21:10
  • 好帮手慕小黑 回复 提问者 慕粉1555086949 #2

    同学你好,因为一个remove重载方法的参数是Object类型的,另一个remove重载方法的参数是int类型的,在调用remove方法时,因为传入的参数是int类型的,所以会调用重载方法的参数是int类型的方法,所以建议同学定义一个Object类型的变量o,并且将5赋值给变量o,在调用remove方法时将变量o传入,代码如下图所示:

    https://img1.sycdn.imooc.com//climg/6307406f0946bf2104140071.jpg

    祝学习愉快!

    2022-08-25 17:27:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师