hashset底层原理
时间: 2024-06-08 16:04:57 浏览: 128
hashSet底层去重原理.xmind
HashSet底层实际上是一个HashMap容器,其中的元素是存储在HashMap的key中的,而value则是一个固定的Object对象。当我们向HashSet中添加元素时,HashSet会首先调用元素所在类的hashCode()方法,计算出元素的哈希值。然后根据这个哈希值,通过算法计算出元素在HashSet底层数组中的存放位置。在此位置上,HashSet会判断是否已经存在元素。如果存在,则判断两个元素是否相等,如果相等,则不添加;如果不相等,则采用链表的方式将该元素添加到链表的末尾。如果该位置上不存在元素,则直接将元素添加到该位置上。
举个例子来说明,假设我们向一个空的HashSet中添加两个Person对象p1和p2,它们的哈希值分别为h1和h2。根据算法计算出的位置分别为pos1和pos2。由于HashSet为空,所以直接将p1和p2添加到pos1和pos2的位置上。此时HashSet中的元素为[p1, p2]。当我们修改p1的name属性为"CC"后,再尝试移除p1。HashSet会再次计算p1的哈希值,得到新的位置pos3。由于pos3上已经存在元素p2,所以HashSet会遍历链表,判断是否有相等的元素。由于p1的name属性被修改为"CC",与原来的"AA"不相等,所以p1会被移除。最终HashSet中的元素为[p2]。
阅读全文