黑马程序员技术交流社区

标题: 关于ArrayList集合remove方法的问题。 [打印本页]

作者: huangchunwei    时间: 2015-2-13 15:52
标题: 关于ArrayList集合remove方法的问题。
本帖最后由 huangchunwei 于 2015-3-6 10:22 编辑

代码在图片上。另一张是运行后的结果。
用contains方法判断x存在啊。但是 ,不知道为什么用remove移除的时候不成功。是不是添加的时候有问题?

N9%J@}`8PMSTJ@H_(S3L)PY.png (16.31 KB, 下载次数: 1)

64123

64123

_$X5P$6NOSA96{[EDBRNSK9.png (13.25 KB, 下载次数: 1)

64124

64124

作者: xyf19881010    时间: 2015-2-13 15:58
看异常就看出来,这个是因为数组越界,a1.remove(x)就是和a1.remove(5),你查看API就应该发现,这个其实就相当于一个数组移除角标5的元素(ArrayList底层就是数组),而这里最大角标是3,所以异常!多看看API,
作者: xyf19881010    时间: 2015-2-13 16:14
你要明白,在集合里面存放的都是对象,根本没有基本元素,所以你存放的5,其实是Integer5,所以你删除时就:a1.remove(new Integer(5)),你试试看
作者: xyf19881010    时间: 2015-2-13 16:27
没事,大家一起进步
作者: xyf19881010    时间: 2015-2-13 16:43
你有什么不懂的,论坛找我就行哈,知道的话就告诉你。
作者: 枪杆不如笔杆    时间: 2015-2-13 17:29
哦,一楼正解,集合中存放的都是对象,所有基本类型都会转出基本类型对应的对象int 会变成Integer,而这里的字符串本身就是对象所以不会出现问题,而后面的基本数据类型会被当成角标,显然OutOfBand,所以一楼正解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2