土豆烧牛肉1985 2009-04-06 10:11
浏览 237
已采纳

Hashtable的get(key)问题,望解答

我先定义了一个MyKey作为hashtable的关键字,而且在MyKey中重写了hashCode()和equals()函数。
但是在hashtable中还是检索不到key值对应的值,
1)
package lesson6;

public class MyKey {
private String name = null;
private int age = 0;

MyKey(String name, int age) {
    this.name = name;
    this.age = age;
}

public String getName() {
    return name;
}

public boolean equals(Object obj) {

    if (obj instanceof MyKey) {
        MyKey objTemp = (MyKey) obj;
        if (this.name.equals(objTemp.name) && this.age == objTemp.age) {
            return true;
        } else
            return false;

    } else {
        return false;
    }

}

public int haseCode() {

    return name.hashCode() + age;

}

public String toString() {
    return name + "," + age;
}

}
2)
package lesson6;

import java.util.*;

public class HashtableTest {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Hashtable numbers = new Hashtable();
    numbers.put(new MyKey("zhangsan", 18), new Integer(1));
    numbers.put(new MyKey("lisi", 15), new Integer(2));
    numbers.put(new MyKey("zhangsan1", 19), new Integer(3));
    numbers.put(new MyKey("zhangsan2", 20), new Integer(4));
    Enumeration e = numbers.keys();
    while (e.hasMoreElements()) {
        MyKey key = (MyKey) e.nextElement();
        System.out.print(key + "=");
        System.out.println(numbers.get(key));
        System.out.println(key.getName().hashCode());
        System.out.println(key.hashCode());
    }

    MyKey ko = new MyKey("lisi", 15);
    // System.out.println("lisi".hashCode()+15);
    // System.out.println(ko.haseCode());
    System.out.println(numbers.get(ko));
}

}

  • 写回答

1条回答 默认 最新

  • shoes_2003 2009-04-06 10:38
    关注

    [code="java"]

    public int haseCode() {

    return name.hashCode() + age;

    } [/code]

    方法名写错了,笔误
    [code="java"]

    public int hashCode() {

    return name.hashCode() + age;

    } [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料