[Java] 手写hashMap →→→→→进入此内容的聊天室

来自 , 2019-06-24, 写在 Java, 查看 103 次.
URL http://www.code666.cn/view/4f398cb9
  1. public V put(K k, V v) {
  2.                 //在这里要判断一个size是否达到了一个扩容的标准
  3.                 if(size >= defaultLength * defaultLoader){
  4.                         up2size();
  5.                 }
  6.                 // 1 创建一个hash函数 根据key和hash函数算出数组下标
  7.                 int index = getIndext(k);
  8.                 Entry<K,V> entry = table[index];
  9.                 if(entry == null){
  10.                         //如果entry为null 说明table的index位置上没有元素 (如果没有数据这个 entry指针是空的)
  11.                         table[index] = newEntry(k,v,null);
  12.                         size++;
  13.                 }else{
  14.                         //如果有数据  就把 entry 拿到的老数据 放进这个新的 newEntry里面  (有数据就把指针指向老的数据)
  15.                         //如果indext位置不为空 说明indext位置有元素 那么就要进行一个替换,然后next指针指向老的数据
  16.                         table[index] = newEntry(k,v,entry);
  17.                 }
  18.                 return table[index].getValue();
  19.         }
  20.        
  21.         private void up2size(){//扩容是默认长度的两倍
  22.                 Entry<K,V>[] newTable = new Entry[2 * defaultLength];
  23.                
  24.                 //新创建数组以后 以前老数组里面的元素要对新数组进行再散列
  25.                 againHash(newTable);
  26.         }

回复 "手写hashMap"

这儿你可以回复上面这条便签

captcha