HashTable的动态存储

StringBuffer 不能用作关键字类

 

HashTableTest.java

package Bean;

import java.util.Enumeration;
import java.util.Hashtable;


public class HashTableTest {

 public static void main(String[] args)
 {
   Hashtable<MyKey, Integer> numbers = new Hashtable<MyKey, Integer>();
    MyKey myKeyTest = new MyKey("Books",22);
      numbers.put(myKeyTest, new Integer(1));
      numbers.put(new MyKey("Mcrady",23), new Integer(1));//关键值不能相等,值可以相等;主要是覆盖了MyKey中的hashCode和equals方法。 
      numbers.put(new MyKey("Jeson1",21), new Integer(3));
      numbers.put(new MyKey("Jeson2",21), new Integer(4));
      numbers.put(new MyKey("Jeson3",21), new Integer(5));
      numbers.put(new MyKey("Jeson4",21), new Integer(6));
      
      Enumeration<MyKey> enume = numbers.keys();
      MyKey mykey = new MyKey();
     
      while(enume.hasMoreElements())
      {             
       try
       {
       mykey = (MyKey) enume.nextElement();
       }
       catch(Exception e)
       {
        System.out.println(e.getMessage());
       }
       System.out.println( mykey.getName()+"'age is " +mykey.getAge()+ " Key is:" + numbers.get(mykey));
      }     
      System.out.println(numbers.get(new MyKey("Jeson4",21)));

  
 }
}

 

 

MyKey.java

package Bean;

public class MyKey {
 private String name = null;
 private int age = 0;
 
 public MyKey()
 {  
 } 
 public MyKey(String name, int age)
 {
  this.name = name;
  this.age = age;
 }
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public Integer getAge() {
  return age;
 }
 public void setAge(Integer age) {
  this.age = age;
 }
 public boolean equals(Object obj) 
 {
  if(obj instanceof MyKey )
  {
   MyKey objTemp = (MyKey) obj;
   if(name.equals(objTemp.name) && age == objTemp.age)
   {
    return true;
   }
   else
    return false;
  }
  else
   return false;
 }
 
 public int hashCode() 
 {
  return name.hashCode() + age;
 }

}

你可能感兴趣的:(bean)