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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2011-9-18 00:47  /  1392 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

黑马网友  发表于 2011-9-18 04:46:41
楼主
这个问题是因为ArrayList和HashSet的数据结构不同造成的,ArrayList是把每个元素作为数组的方式存放的,而HashSet存储是用Hashmap存储每个元素的hashcode值(这样可以唯一确定一个元素),所以当你在调用contains方法时,ArrayList是调用元素的equals方法也就是你重写的那个equals方法,如果存在相同的元素就返回true,否则返回false;而HashSet则是比较两个对象的hashcode值,如果hashcode值相同就返回true,否则返回false。

评分

参与人数 1技术分 +2 收起 理由
admin + 2 加分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-18 07:32:07
沙发

回复 楼主 的帖子

ArrayList里面的值可以重复,而Hashset里面的值,由哈希算法算法并分配到一个唯一的位置,所以不能重复。
回复 使用道具 举报
黑马网友  发表于 2011-9-18 08:19:27
藤椅

回复 楼主 的帖子

首先同意二楼的说法。。。List接口是有序可重复,而Set接口是无序不可重复的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马