Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 有谁研究过HashMap的实现吗?有些问题想请教一下
yangjinfeng





发贴: 26
积分: 0
于 2004-11-16 17:04 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
有人关注过HashMap理数据存储和访问吗?
下面这两方法我始终不明白,请热心肠的人指教我已经看了两天了

public Object put(Object key, Object value) {
Object k = maskNull(key);
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;
}

void addEntry(int hash, Object key, Object value, int bucketIndex) {
table[bucketIndex] = new Entry(hash, key, value, table[bucketIndex]);
if (size++ >= threshold)
resize(2 * table.length);
}


下面这两个方法的意义和实现机理何在

static int hash(Object x) {
int h = x.hashCode();

h += ~(h << 9);
h ^= (h >>> 14);
h += (h << 4);
h ^= (h >>> 10);
return h;
}

static int indexFor(int h, int length) {
return h & (length-1);
}


littledeer1974 edited on 2004-11-21 09:01


初学者与<书>

话题树型展开
人气 标题 作者 字数 发贴时间
17897 有谁研究过HashMap的实现吗?有些问题想请教一下 yangjinfeng 1148 2004-11-16 17:04
10618 Re:有谁研究过HashMap的实现吗?有些问题想请教一下 yangjinfeng 26 2004-11-21 08:19
10684 Re:有谁研究过HashMap的实现吗?有些问题想请教一下 arthas1982 75 2004-11-25 18:30

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923