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(Entry
e=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;
}
}
