本文主要是介绍集合四课之二 Set接口下,HashSet、LinkedHashSet和TreeSet介绍与区别 附带速记卡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
HashSet、LinkedHashSet和TreeSet介绍
我们先认识一下框架图
HashSet
HashSet有以下特点
-
不能保证元素的排列顺序,顺序有可能发生变化
-
不是同步的
-
集合元素可以是null,但只能放入一个null
-
没有set和get方法 只能通过迭代器取值
当向HashSet结合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据 hashCode值来决定该对象在HashSet中存储位置。
HashSet集合判断两个元素相等的标准是着些判断俩个对象的hashCode值是否相等,第2步会调用equals方法比较相等,返回false,做add操作。
那为什么要同时判断equals方法和hashCode方法呢?问题一
而且还要先判断hashCode然后再判断equals方法? 问题二
问题一
关于同时判断equals方法和hashCode方法的必要性
因为存在“hashCode值不同,对象相同的情况,对象相同的情况,hashCode也不同的情况”; 哎,这个说法,怎么感觉有点不对呢? 不是之前都是这样认定的嘛“俩个对象的equals方法返回true,hashCode肯定相等;hashCode相等的俩个对象,equals方法返回不一定为true”其实红色的这句说法,确实是大家普便认为的,但这种情况如果是自定义对象,只重写了equals方法&#x
这篇关于集合四课之二 Set接口下,HashSet、LinkedHashSet和TreeSet介绍与区别 附带速记卡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!