//MyKey.java public class MyKey { String name=null; int age=0; public MyKey(String name,int age) { this.name=name; this.age=age; } public boolean equals(Object obj) // { if(obj instanceof MyKey) //判断obj是否为MyKey类型的对象 { MyKey objTemp=(MyKey)obj; //如果obj是MyKey类型的对象,就要进行转换。 if(name.equals(objTemp.name) && age==objTemp.age) { return true; } else { return false; } } else { return false; } } public int hashCode() //覆盖Object.hashCode方法 { return name.hashCode()+age; //系统自动覆盖String对象的hashCode()方法 } public String toString() //覆盖toString()方法,不然输出的是乱七八糟的东西 { return name+","+age; } } //HashtableTest.java import java.util.*; class HashtableTest { public static void main(String args []) { Hashtable numbers=new Hashtable(); numbers.put(new MyKey("zhangsan",25),new Integer(1)); numbers.put(new MyKey("lisi",30),new Integer(2)); numbers.put(new MyKey("wangwu",18),new Integer(3)); 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(numbers.get(new MyKey("zhangsan",25))); //如果不覆盖MyKey中的equals()和hashCode()结果为null } }