gistfile1.txt public V put(K key,V value) { //如果Key为null,则调用putForNullKey方法进行处理 if(key==null) { return putForNullKey(value); } //根据key的keycode计算Hash值 int hash=hash(key.hashcode()); //搜索指定hash值在
public V put(K key,V value) { //如果Key为null,则调用putForNullKey方法进行处理 if(key==null) { return putForNullKey(value); } //根据key的keycode计算Hash值 int hash=hash(key.hashcode()); //搜索指定hash值在对应table中的索引 int i=indexFor(hash,table.length); //如果i索引出的Entry不为null,通过不断循环遍历e元素的下一个元素 for(Entrye=table[i];e!=null;e=e.next) { Object k; //找到指定key与需要放入的key相等(hash值相等,通过equals比较返回true) if(e.hash==hash&&((k=e.key)==key||k.equals(k))) { V oldValue=e.value; e.value=value; e.recordAccess(this); return oldValue; } //如果i索引出的Entry为null,表明此处没有Entry modCount++; //将key,value都添加到i索引处 addEntry(hash,key,value,i); return null; } }