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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么HashSet会判断hashCode值,而TreeSet则不会判断呢?

4 个回复

倒序浏览
hashSet底层是hash结构,TreeSet底层是二叉树
回复 使用道具 举报
HashSet的底层数据结构是哈希表,为了保证元素唯一性,通过元素的两个方法:hashCode和equals方法。
如果元素的HashCode值相同,才会判断equals是否为true,如果元素的hashCode值不同,不会调用equals。哈希值是系统底层的哈希算法算出来的。哈希值一样,对象内容一致,就不会存进去。不是同一对象,但是哈希地址值一样(比如覆写hashCode方法使其一样),就会顺延存储。
TreeSet底层数据结构是二叉树。保证元素唯一性的依据是compareTo方法。
综上所述,HashSet会判断hashCode值,而TreeSet则不会判断。
回复 使用道具 举报
HashSet是哈希表结构,为了保证元素的唯一性,就会判断每个元素的哈希值。如果哈希值相同,就会去自动调用equals 方法,如果哈希值不同,就不会判断equals方法,提供对象的比较速度。  
TreeSet是二叉树结构,  是对Set集合的元素进行排序的,有自定义的比较方式,一般有两种方式。
回复 使用道具 举报
哈希表, 通过hash值作为数据的标记,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马