Hash 类

MyKey
 1 import java.util.*;
 2 public class MyKey
 3  {
 4     private String name = null;
 5     private int age = 0;
 6 
 7     public boolean equals(Object obj)
 8      {
 9         if(obj instanceof myKey)  // 对象与mykey 对象比较
10         {
11             MyKey objTemp=(MyKey)obj;
12           if(name.equals(objTemp.name)&&age==objTemp.age)
13              {    //字符串的比较要
14                 //用equals.
15             return true;
16             }
17             else
18                 {
19                 return false;
20                 }
21         }
22         else{return false ;}
23 
24         // TODO: Add your code here
25     }
26 
27 
28     public int HashCode() {
29 
30     /**
31      * Method toString
32      *
33      *
34      * @return
35      *
36      */
37     public String toString() {
38         retun name+","+age;
39 
40     }
41 
42         return name.hashCode()+age;    //调用关键字变量,计算hashCode
43         //值。 StringBuffer 没有覆盖hashCode类,不能被用作关键字类
44     }
45 
46     public MyKey(String name,int age)
47          {
48            this.name=name;
49            this.age=age;
50             // TODO: Add your code here
51          }
52 }
HashtableTest
 1 import java.util.*;
 2 public class HashtableTest {
 3 
 4     public static void main(String[] args)
 5     {
 6         // TODO: Add your code here
 7         Hashtable numbers=new Hashtable();
 8         numbers.put(new MyKey("zhangsan",18),new Integer(1));
 9         numbers.put(new MyKey("wangwu",118),new Integer(2));
10         numbers.put(new MyKey("lisin",23),new Integer(3));
11                 Enumeration e=numbers.keys();  //取出对象
12                 while(e.hasMoreElements())
13                 {
14                     MyKey key= (MyKey)e.nextElement(); //关键字是mykey类型的
15                 //    System.out.print(key+"=");
16                         System.out.print(key+"=");
17                     System.out.println(numbers.get(key));
18                 }
19     }
20 
21 }

 

Hashtable 类   不能有重复关键字


put方法:

Hashtable number=new Hashtable() ;
numbers.put("one",new integer(1));
numbers.put("2",new integer(2));
numbers.put("3",new integer(3));

检索数据用get方法,通过关键字对象       StringBuffer 没有覆盖hashCode类,不能被用作关键字类
用作关键字的类必须覆盖object。hashCode(返回散列码)方法
和object。equals方法。
integer n=(integer)number.get(“one”);
if(!n=null)
 {
   System.out.println("one="+n);
}

posted @ 2012-06-02 18:24  小薇林  阅读(199)  评论(0编辑  收藏  举报