Java中HashMap的实现
编程技术  /  houtizong 发布于 3年前   60
public Object put(Object key, Object value) { Object k = maskNull(key); public Object put(Object key, Object value) { Object k = maskNull(key);
int hash = hash(k); int i = indexFor(hash, table.length); int hash = hash(k); int i = indexFor(hash, table.length);
for (Entry e = table[i]; e != null; e = e.next) { if (e.hash == hash && eq(k, e.key)) { Object oldvalue = e.value; e.value = value; //把新的值赋予给对应键值。 e.recordAccess(this); //空方法,留待实现 return oldvalue; //返回相同键值的对应的旧的值。 } } modCount++; //结构性更改的次数 addEntry(hash, k, value, i); //添加新元素,关键所在! return null; //没有相同的键值返回 } for (Entry e = table[i]; e != null; e = e.next) { if (e.hash == hash && eq(k, e.key)) { Object oldvalue = e.value; e.value = value; //把新的值赋予给对应键值。 e.recordAccess(this); //空方法,留待实现 return oldvalue; //返回相同键值的对应的旧的值。 } } modCount++; //结构性更改的次数 addEntry(hash, k, value, i); //添加新元素,关键所在! return null; //没有相同的键值返回 }
void addEntry(int hash, Object key, Object value, int bucketIndex) { table[bucketIndex] = new Entry(hash, key, value, table[bucketIndex]); void addEntry(int hash, Object key, Object value, int bucketIndex) { table[bucketIndex] = new Entry(hash, key, value, table[bucketIndex]);
if (size++ >= threshold) //这个threshold就是能实际容纳的量 resize(2 * table.length); //超出这个容量就会将Object table重构 if (size++ >= threshold) //这个threshold就是能实际容纳的量 resize(2 * table.length); //超出这个容量就会将Object table重构
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接