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