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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 晨若兰曦 中级黑马   /  2015-2-10 14:18  /  1179 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

HashSet集合保证元素唯一性:通过元素的hashCode方法,和equals方法完成的。 当元素的hashCode值相同时,才继续判断元素的equals是否为true。 如果为true,那么视为相同元素,不存。如果为false,那么存储。 如果hashCode值不同,那么不判断equals,从而提高对象比较的速度。   
这句话不是很理解,请高手指教。。

评分

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

查看全部评分

3 个回复

倒序浏览
就是先比较hashcode的值 如果不一样 就不调用equals()方法了
回复 使用道具 举报
hashCode()实际上在计算此对象需要存放的地址,默认情况下这个值是与对象的内容有关系的,如果哈希值相同就有两种可能,一个是两个对象是一个对象,或是两个对象经过计算后得到的值是相同的,为了进一步确定属于哪种情况所以才会有equals()函数来判断内容是否真的相等
回复 使用道具 举报
HashSet在存储对象时的步骤!1.通过hashCode()方法算出对象的地址值,简单说就是其位置!如果在该位置值没有对象,则存储!如果地址值相同,则通过equals()方法判断内容是否相同,相同则不存!不相同则用串联或其他方式存储!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马