Topic: 有谁研究过HashMap的实现吗?有些问题想请教一下

  Print this page

1.有谁研究过HashMap的实现吗?有些问题想请教一下 Copy to clipboard
Posted by: yangjinfeng
Posted on: 2004-11-16 17:04

有人关注过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);
}

2.Re:有谁研究过HashMap的实现吗?有些问题想请教一下 [Re: yangjinfeng] Copy to clipboard
Posted by: yangjinfeng
Posted on: 2004-11-21 08:19

没有人愿意解答吗?或者是每人研究这个问题吗?我不相信

3.Re:有谁研究过HashMap的实现吗?有些问题想请教一下 [Re: yangjinfeng] Copy to clipboard
Posted by: arthas1982
Posted on: 2004-11-25 18:30

楼上这位兄台问得也有点强人所难,关于Hash的问题,绝对可以写一本书了,让人以言两语说明白,似乎不太可能,不过你可以去IBM上看看,上面有些不错的资料


   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