黑马程序员技术交流社区

标题: 为什么输出还有相同元素? [打印本页]

作者: 汪平乐    时间: 2013-5-28 13:32
标题: 为什么输出还有相同元素?
本帖最后由 汪平乐 于 2013-5-28 18:25 编辑

代码:

123.jpg (31.98 KB, 下载次数: 0)

123.jpg

456.jpg (30.67 KB, 下载次数: 0)

456.jpg

256.jpg (10.87 KB, 下载次数: 0)

256.jpg

作者: 顾玲玉    时间: 2013-5-28 13:39
因为ArrayList本身可以添加存放相同值,添加成功了,当然也能打印了。
作者: 吴刚—heima    时间: 2013-5-28 14:51
我想告诉你的是,你下面的代码使用迭代器将ArrayList中的对象遍历出来,其中ArrayList里面存储的数据如楼上所说是可以重复的,你的euquals方法想要的功能是覆盖相同的数据,但是你要看清楚,你在遍历的时候,实际上并没有调用这个函数,你只是使用构造方法初始化了几个对象,并且将其添加到ArrayList中,那么你怎么能够期望你相同的数据会被去掉呢?
这是我的看法,你好好考虑一下,我觉得你那个equals方法并不合适,因为感觉无从调用,因为你必须事先知道哪两个相等,否则你必须给其余对象都调用equals方法来将其数据覆盖掉。
作者: 汪平乐    时间: 2013-5-28 16:56
顾玲玉 发表于 2013-5-28 13:39
因为ArrayList本身可以添加存放相同值,添加成功了,当然也能打印了。

使用ArrayList(collection)这种构造方法,然后让集合具备我复写的equals方法,这样可行不?
作者: 汪平乐    时间: 2013-5-28 16:58
吴刚—heima 发表于 2013-5-28 14:51
我想告诉你的是,你下面的代码使用迭代器将ArrayList中的对象遍历出来,其中ArrayList里面存储的数据如楼上 ...

你解答的很详细,我是想去掉重复的相同元素,让集合复写equals,在ArrayList(new Person())时调用,结果很明显没有调用...




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