谁能帮我修改下面的代码,达到: 
使用Mykey类作为关键字类,从Hashtable中取出所有关键字的集合和取出所有值的集合?(我用的是JDK5.0.9,要考虑到泛型.) import java.util.*; class Mykey 

   private String name; 
   private int age; 
   public Mykey(String name,int age) 
   { 
      this.name=name; 
      this.age=age; 
   } 
   public String toString() 
   { 
      return new String(name+","+age); 
   } 
   public boolean equals(Object obj) 
   { 
      if(name.equals(obj.name) && age==obj.age) 
            return true; 
      else 
            return false; 
    } 
    public int hashCode() 
    { 
       return name.hashCode()+age; 
    } 
} public class HashtableTest 

    public static void main(String []args) 
    { 
        Hashtable<Integer,String> numbers=new Hashtable<Integer,String>(); 
        numbers.put(new Mykey("zhang san",18),new Integer(11)); 
        numbers.put(new Mykey("lisi",15),new Integer(22)); 
        numbers.put(new Mykey("wangwu",12),new Integer(33)); 
        Enumeration e=numbers.keys(); 
        while(e.hasMoreElements()) 
        { 
            Mykey key=(Mykey)e.nextElement(); 
            System.out.println(key.toString()+"="); 
            System.out.println(numbers.get(key).toString()); 
        } 
    } 
}

解决方案 »

  1.   

    import java.util.*; class Mykey 

       private String name; 
       private int age; 
       public Mykey(String name,int age) 
       { 
          this.name=name; 
          this.age=age; 
       } 
       public String toString() 
       { 
          return new String(name+","+age); 
       } 
       public boolean equals(Mykey obj) 
       { 
          if(name.equals(obj.name) && age==obj.age) 
                return true; 
          else 
                return false; 
        } 
        public int hashCode() 
        { 
           return name.hashCode()+age; 
        } 
    } public class HashtableTest 

        public static void main(String []args) 
        { 
            Hashtable<Mykey,Integer> numbers=new Hashtable<Mykey,Integer>(); 
            numbers.put(new Mykey("zhang san",18),new Integer(11)); 
            numbers.put(new Mykey("lisi",15),new Integer(22)); 
            numbers.put(new Mykey("wangwu",12),new Integer(33)); 
            Enumeration e=numbers.keys(); 
            while(e.hasMoreElements()) 
            { 
                Mykey key=(Mykey)e.nextElement(); 
                System.out.println(key.toString()+"="); 
                System.out.println(numbers.get(key).toString()); 
            } 
        } 
    }
      

  2.   

    下面是执行的结果:
    lisi,15=
    22
    zhang san,18=
    11
    wangwu,12=
    33
      

  3.   

    import java.util.*;public class MyKey 
    {
       public String name;
        public int age;
        public MyKey() 
        {
        }
        public MyKey(String name ,int age)
        {
            this.name = name;
            this.age = age;
        }
        public int hashCode()
        {
            return name.hashCode() + age;        
        }
        public boolean equals(Object s)
        {
            if(name == (((MyKey)s).name) && age == (((MyKey)s).age) )
                return true;
            else 
                return false;       
        }
        public String toString()
        {
            return new String(name + "," + age);
        }
        
        public static void main(String[] args)
        {
            HashMap map = new HashMap();
            map.put(new MyKey("zhang" ,18) ,new Integer(90));
            map.put(new MyKey("lisi" ,22) ,new Integer(100));
            
            Iterator it = map.keySet().iterator();
            while(it.hasNext())
            {
               MyKey key= (MyKey)it.next(); 
                System.out.println(key.name + " " + key.age + " " +map.get(key));
            }
            
        }
      

  4.   

    import java.util.*;public class MyKey 
    {
       public String name;
        public int age;
        public MyKey() 
        {
        }
        public MyKey(String name ,int age)
        {
            this.name = name;
            this.age = age;
        }
        public int hashCode()
        {
            return name.hashCode() + age;        
        }
        public boolean equals(Object s)
        {
            if(name.equals(((MyKey)s).name) && age == (((MyKey)s).age) )
                return true;
            else 
                return false;       
        }
        public String toString()
        {
            return new String(name + "," + age);
        }
        
        public static void main(String[] args)
        {
            HashMap map = new HashMap();
            map.put(new MyKey("zhang" ,18) ,new Integer(90));
            map.put(new MyKey("lisi" ,22) ,new Integer(100));
            
            Iterator it = map.keySet().iterator();
            while(it.hasNext())
            {
               MyKey key= (MyKey)it.next(); 
                System.out.println(key.name + " " + key.age + " " +map.get(key));
            }
            
        }  
    }
    我也晕了
      

  5.   

    楼上 
    public boolean equals(Mykey obj) 
    没有重写方法 public boolean equals(Object obj) 
    会不会有问题