黑马程序员技术交流社区
标题:
为什么HashSet会判断hashCode值,而TreeSet则不会判断呢?
[打印本页]
作者:
以利亚
时间:
2015-1-11 11:05
标题:
为什么HashSet会判断hashCode值,而TreeSet则不会判断呢?
为什么HashSet会判断hashCode值,而TreeSet则不会判断呢?
作者:
jojo
时间:
2015-1-11 11:16
hashSet底层是hash结构,TreeSet底层是二叉树
作者:
陈佳
时间:
2015-1-11 11:17
HashSet的底层数据结构是哈希表,为了保证元素唯一性,通过元素的两个方法:hashCode和equals方法。
如果元素的HashCode值相同,才会判断equals是否为true,如果元素的hashCode值不同,不会调用equals。哈希值是系统底层的哈希算法算出来的。哈希值一样,对象内容一致,就不会存进去。不是同一对象,但是哈希地址值一样(比如覆写hashCode方法使其一样),就会顺延存储。
TreeSet底层数据结构是二叉树。保证元素唯一性的依据是compareTo方法。
综上所述,HashSet会判断hashCode值,而TreeSet则不会判断。
作者:
xiao飞
时间:
2015-1-11 11:21
HashSet是哈希表结构,为了保证元素的唯一性,就会判断每个元素的哈希值。如果哈希值相同,就会去自动调用equals 方法,如果哈希值不同,就不会判断equals方法,提供对象的比较速度。
TreeSet是二叉树结构, 是对Set集合的元素进行排序的,有自定义的比较方式,一般有两种方式。
作者:
HiloFeng
时间:
2015-1-11 13:08
哈希表, 通过hash值作为数据的标记,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2