A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huangchunwei 中级黑马   /  2015-2-13 15:52  /  873 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 huangchunwei 于 2015-3-6 10:22 编辑

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

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

64123

64123

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

64124

64124

11 个回复

倒序浏览
看异常就看出来,这个是因为数组越界,a1.remove(x)就是和a1.remove(5),你查看API就应该发现,这个其实就相当于一个数组移除角标5的元素(ArrayList底层就是数组),而这里最大角标是3,所以异常!多看看API,

点评

ArrayList不是有两个remove方法么 。 一个是按照索引移除指定元素,还有一个是直接移除集合中首次出现的指定元素。是不是用到remove(5)是不是按照索引的方式来移除啊。   发表于 2015-2-13 16:12
那个5是不是已经添加到集合中了啊? 既然是当成角标来移除元素,那怎样才能把5移除? contains(5)结果也是true。晕了。  发表于 2015-2-13 16:08

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
你要明白,在集合里面存放的都是对象,根本没有基本元素,所以你存放的5,其实是Integer5,所以你删除时就:a1.remove(new Integer(5)),你试试看

点评

OK , 已经解决。谢谢。  发表于 2015-2-13 16:19
嗯嗯,我试试。非常感谢。  发表于 2015-2-13 16:17
回复 使用道具 举报
没事,大家一起进步

点评

嗯嗯。我这是刚学什么都不会。那个。。能加你QQ吗?有问题了回来好请教你。嘿嘿~~  发表于 2015-2-13 16:34
回复 使用道具 举报
你有什么不懂的,论坛找我就行哈,知道的话就告诉你。

点评

嗯嗯。好的。  发表于 2015-2-13 17:11
回复 使用道具 举报
哦,一楼正解,集合中存放的都是对象,所有基本类型都会转出基本类型对应的对象int 会变成Integer,而这里的字符串本身就是对象所以不会出现问题,而后面的基本数据类型会被当成角标,显然OutOfBand,所以一楼正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马