已经映射过了,所以访问纪录的时候就只需要给出记录关键字,而不需要指明记录位置了
是通过hashcode()这个函数来完成这种映射的

解决方案 »

  1.   

    映射过程在哪一步?请问put()方法的作用。
      

  2.   

    put方法通过key.hashcode()来得到记录位置,检查该位置有没有被占用,如果被占用则转移到别的位置
    get方法通过key.hashcode()莱得到纪录位置,检查该位置是不是需要的对象,如果不是则转移到别的位置
      

  3.   

    多谢不厌其烦地指教,但是我还有不明白的地方:
       1、看来key.hashCode()方法就是哈希函数,它返回记录的位置。
       2、那么Object put(Object key, Object value)这个方法中,key和value
    的关系是什么?即在例子中,Context.INITIAL_CONTEXT_FACTORY和"com.sun.jndi.fscontext.RefFSContextFactory"的关系是什么呢?
       3、我看了帮助,应该是在key和value之间建立映射关系。key只是记录中的一个字段而已,它只和存储位置之间通过哈希函数建立映射关系,还要和谁建立映射呢?
       期待你的回答!
      

  4.   

    大多数的情况下,key只是起一个索引的作用,真正要在程序中使用的是value.
    使用Hashtable一个是提高程序的运行效率,还有一点可以用来实现程序的可插入特性(plug-able),即可以通过改变静态的数据来实现程序的动态选择.
      

  5.   

    q:Context.INITIAL_CONTEXT_FACTORY和"com.sun.jndi.fscontext.RefFSContextFactory"的关系是什么呢?
    a:他表示的是LDAP的Provider 是Sun提供的(JNDI->LDAP PROVIDER->目录服务),这点类似于用JDBC访问数据库,是一个service provider的标志,如果是netscape公司的,那又是另外一个标记了.
      

  6.   

    是不是这样的:
        key和value一起作为一条记录放进Hashtable中,起索引作用的是key,
    中间隐含了Hash函数的映射过程而value包含了真正的信息?
      

  7.   

    String.hashCode()=s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1];
    hoho.....