以下代码是jdk自带的hashmap类的put方法
我想把他改写成C语言,试试运行速度会不会提高。
因为没有才接触java,不明白以下红色区域
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;
}
这个e类是什么类?哪里定义的,是不是类似于一个C语言里面的结构体?
另外table的定义又在哪里?是不是就是一个类似存放整数的数组?
entry是什么意思?是不是个抽象的数据类型,小范围使用的时候可以删掉它
找了半天没找到,类似于
for (e = table[i]; e != null; e = e->next) { 
     if (e.hash == hash && eq(k, e.key)) {
      oldValue = e.value; 
       e.value = value;
       e.recordAccess(this);
       return oldValue;
     } 
   }

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【SHOUYU2】截止到2008-07-28 18:08:53的历史汇总数据(不包括此帖):
    发帖的总数量:27                       发帖的总分数:530                      每贴平均分数:19                       
    回帖的总数量:26                       得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:15                       结贴的总分数:300                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:12                       未结的总分数:230                      
    结贴的百分比:55.56 %               结分的百分比:56.60 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   

    其实这些问题问sun去吧。都人家定的,没为什么,就这么用。
      

  3.   

    确实不应该问tool user原理性的问题
      

  4.   

    HashMap算法原理来源于哈希算法table 就是哈希表.哈希表里的元索就是Entry, 是由key-value组成的对象, 该类位于HashMap.java中, 为java.util.HashMap.Entry类
    红色字体的意思是说:由于Key是一个对象, 得先计算出hashcode, 即一个整型值.
    然后以此hashcode为下标, 要询hash值相同, 且key也完全一致的对象, 
    如果存在, 则更新对应的值, 即e.value=value 
    如果不存在, 则增加一个key, 即addEntry方法如还不明白, 可参考哈希算法
      

  5.   

    lz没有必要改写HashMap,画蛇添足。
      

  6.   

    e 是 Entry 对象,实际上是 Map 的内部存储结构这个 Entry 作为 HashMap 的静态内部类,实现了 Map.Entry 接口,
    这个内部类的实现在 HashMap.java 文件中可以找到,类的签名为:static class Entry<K,V> implements Map.Entry<K,V>