哈希表:實際上是一個數組,數組中的每一個元素都是一個鏈表。數組
桶(bucket):哈希表中每一個元素(鏈表),都是一個桶。源碼分析
哈希衝突:只要出如今一個桶的對象就是哈希衝突。code
哈希值:就是一串數字,能夠經過對象的hashcode(根據對象的地址值計算出來的)方法計算得出。對象
下圖源碼分析:是hastset()添加元素判斷惟一性的源碼blog
先計算出添加元素key的哈希值,而後根據哈希值找到對應的桶的索引位置i(每一個桶的哈希值都是同樣的,因此在一個桶的都是哈希衝突),而後遍歷一個桶(table【i】),而後獲得每個節點e,而後e=e.next (鏈表中每個對象都包含一個key和一個next,next暫時理解爲指向一個元素的地址值),而後再判斷e的哈希值和添加元素的哈希值是否相等e.hash==hash,而後調用equals方法,二者有一個相同就返回false,若是不相同就走下一步,添加成功。索引