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;
}
}