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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Mr.Hao 中级黑马   /  2014-6-25 16:27  /  791 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

学到了Set集合,大家都知道这个集合是不允许重复元素存在的,所以不管是自己编写的类还是存String之类的类的对象,都会比较hashcode以及equals等,那么我想知道我存放新元素的时候都会和已经存放进去的每个元素都比较么,那样的话不就是越存越慢,存的越多,比较的时间就越长,是这样的比较机制么?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

2 个回复

倒序浏览
不是的,我记得HaseSet内部会根据你的hashcode进行计算,然后区域划分,也就是说即使哈希码不同,他们也可能被划分在同一个区域,你储存一个元素时,根据你的hashcode到指定的区域比较。不会全部都比较的.

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
    首先比较的是hashcode值。若hashcode值相同在去比较对象的地址值是否相同。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马