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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王希军 中级黑马   /  2013-8-1 15:41  /  1471 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-8-2 19:01 编辑

ArrayList的add()方法中添加类,当前值会不会覆盖以前的值?最终的结果就是说会不会都是同一个值?

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

9 个回复

倒序浏览
本帖最后由 黄兴旺 于 2013-8-1 16:31 编辑

难道我错了...
回复 使用道具 举报
ArrayList的底层是数组,数组的中允许有相同的元素,因为它门角标不同。
故:ArrayList的add()方法中添加类,当前值不会覆盖以前。{:soso_e100:}
回复 使用道具 举报
不会覆盖的,你可以按照数组的方式理解它。
最终添加进去后,可以内容相同,其它的倒是不用考虑啦。
因为ArrayList只考虑equals的方法,不想HashSet那样需要先考虑HashCode在考虑equals方法。
回复 使用道具 举报
breaveheart 发表于 2013-8-1 16:27
不会覆盖的,你可以按照数组的方式理解它。
最终添加进去后,可以内容相同,其它的倒是不用考虑啦。
因为Ar ...

那为什么 我遍历ArrayList   list的时候,打印输出时  只是重复的打印最后一个呢
回复 使用道具 举报
楼主贴上你的代码。。。。
回复 使用道具 举报
List:元素是有序的,元素可以重复,因为该集合体系有索引
回复 使用道具 举报
王希军 发表于 2013-8-1 17:34
那为什么 我遍历ArrayList   list的时候,打印输出时  只是重复的打印最后一个呢 ...

你应该说的是迭代器的操作方法吧?
Iterator it = al.iterator();
while(it.hasNext())
{
       System.out.println(it.next());
}
这段代码里面hasNext()返回的是一个boolean值,如果下一个角标还有元素则返回true,
然后执行while中的语句,那么就next()返回下一个元素,这并没有问题。
因为next()的意思并不是说打印最后一个,而是打印当前角标的下一个元素值。
回复 使用道具 举报
不会覆盖的,你可以按照数组的方式理解它。ArrayList底层调用数组,不用考虑元素的唯一性。
最终添加进去后,可以内容相同,其它的倒是不用考虑啦。
至于楼主为什么永远打印最后一个,估计是输出语句的问题,求代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马