hashset

哈希表:实际上是一个数组,数组中的每一个元素都是一个链表。数组

桶(bucket):哈希表中每一个元素(链表),都是一个桶。源码分析

哈希冲突:只要出如今一个桶的对象就是哈希冲突。code

哈希值:就是一串数字,能够经过对象的hashcode(根据对象的地址值计算出来的)方法计算得出。对象

下图源码分析:是hastset()添加元素判断惟一性的源码blog

先计算出添加元素key的哈希值,而后根据哈希值找到对应的桶的索引位置i(每一个桶的哈希值都是同样的,因此在一个桶的都是哈希冲突),而后遍历一个桶(table【i】),而后获得每个节点e,而后e=e.next (链表中每个对象都包含一个key和一个next,next暂时理解为指向一个元素的地址值),而后再判断e的哈希值和添加元素的哈希值是否相等e.hash==hash,而后调用equals方法,二者有一个相同就返回false,若是不相同就走下一步,添加成功。索引

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章
相关标签/搜索