当前位置 : 主页 > 编程语言 > c++ >

HashMap类中的put方法的源码

来源:互联网 收集:自由互联 发布时间:2021-07-03
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值在
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值在对应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;
    }
}
 
网友评论