WEB开发网
开发学院软件开发Java 通过分析 JDK 源代码研究 Hash 存储机制 阅读

通过分析 JDK 源代码研究 Hash 存储机制

 2009-11-28 00:00:00 来源:WEB开发网   
核心提示: 我们可以看 HashMap 类的 put(K key , V value) 方法的源代码:publicVput(Kkey,Vvalue){//如果key为null,调用putForNullKey方法进行处理if(key==null)returnputForNullKey(value);//根据k

我们可以看 HashMap 类的 put(K key , V value) 方法的源代码:

 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<K,V> e = table[i]; e != null; e = e.next) 
 { 
  Object k; 
  // 找到指定 key 与需要放入的 key 相等(hash 值相同 
  // 通过 equals 比较放回 true) 
  if (e.hash == hash && ((k = e.key) == key 
  || key.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; 
 } 

JDK 源码

在 JDK 安装目录下可以找到一个 src.zip 压缩文件,该文件里包含了 Java 基础类库的所有源文件。只要读者有学习兴趣,随时可以打开这份压缩文件来阅读 Java 类库的源代码,这对提高读者的编程能力是非常有帮助的。需要指出的是:src.zip 中包含的源代码并没有包含像上文中的中文注释,这些注释是笔者自己添加进去的。

上一页  1 2 3 4 5 6 7  下一页

Tags:通过 分析 JDK

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接