HashSet的底层数据结构是哈希表,为了保证元素唯一性,通过元素的两个方法:hashCode和equals方法。
如果元素的HashCode值相同,才会判断equals是否为true,如果元素的hashCode值不同,不会调用equals。哈希值是系统底层的哈希算法算出来的。哈希值一样,对象内容一致,就不会存进去。不是同一对象,但是哈希地址值一样(比如覆写hashCode方法使其一样),就会顺延存储。
TreeSet底层数据结构是二叉树。保证元素唯一性的依据是compareTo方法。
综上所述,HashSet会判断hashCode值,而TreeSet则不会判断。 |