关于Hashtable类的hashcode
											有个问题不是很明白,书上说当比较Hashtable对象的key是否相同时必须覆盖equals()方法和hashCode()方法,我觉的光覆盖eauals方法就可以了啊。因为只要两个对象的内容相等,我们就能判断是相同的键值了啊。										
					
	 程序代码:
程序代码:    public synchronized V put(K key, V value) {
    // Make sure the value is not null
    if (value == null) {
        throw new NullPointerException();
    }
    // Makes sure the key is not already in the hashtable.
    Entry tab[] = table;
    int hash = key.hashCode();
    int index = (hash & 0x7FFFFFFF) % tab.length;
    for (Entry<K,V> e = tab[index] ; e != null ; e = e.next) {
        if ((e.hash == hash) && e.key.equals(key)) {   //这里写着当hash值相等并且equals相等时才会被认为是同一个key,会覆盖原有的value
        V old = e.value;
        e.value = value;
        return old;
        }
    }
hash算法就是根据hash值确定唯一的对象,所以自然会去调用hashCode()方法计算哈希值,如果不覆盖,那么即便自己建的对象中属性完全一样,只要是new的不同实例,那么算出的哈希值就是不同的,会被认为是不同的key。
[ 本帖最后由 shellingford 于 2010-8-25 21:08 编辑 ]



 
											





 
	    

 
	

