设为首页 加入收藏

TOP

2011年计算机二级考试JAVA知识点整理(9)
2014-10-31 12:45:08 来源: 作者: 【 】 浏览:89
Tags:2011年 计算机 二级 考试 JAVA 知识点 整理

  1.1.2.5 HashTable类


  HashTable类不紧可以像Vector类一样动态的存储一系列的对象,而且对存储的每一个对象(称为值)都安排另一个对象(称为关键字)与它相关联。


  用做关键字的类必须覆盖Object.hashCode方法和Object.equals方法,


  因为要取出数据时,传递给get()方法的参数要跟里面的关键字比较,这时就要使用equals()方法。另外如果这两个关键字相等,他们的hashcode()返回值也要相等。


  编程举例:使用自定义类作为hashtable()关键字的类。


  public class MyKey


  {


  String name=null;


  int age=0;


  public boolean equals(Object obj) //作为关键字的类要覆盖该方法


  {


  if(obj instanceof MyKey) //如果它是mykey类型的,则先要转换为mykey类型,因为编译器不知道他是什么类型的


  {


  MyKey objtemp=(MyKey)obj; //然后下面再比较里面的内容是否相等。


  if(name.equals(objtemp.name)&&age==objtemp.age)


  {


  return true; //如果内容也相等,则相等


  }


  else


  {


  return false; //否则不等


  }


  }


  else


  {


  return false; //如果它不是mykey类型的,则肯定不相等,因为类型都不同


  }


  }


  public int hashCode() //作为关键字的类要覆盖该方法


  {


  return name.hashCode()+age; //因为string类已经覆盖了hashcode()方法,stringbuffer类没有覆盖该方法,所以不可以用做关键字类。


  //如果name和age有一个不等,返回值则不等


  }


  public MyKey(String name,int age) //覆盖构造函数


  {


  this.name=name;


  this.age=age;


  }


  public String toString() //如果不覆盖这个方法,则会产生乱码


  {


  return name+","+age;


  }


  }


  import java.util.*;


  public class HashTableTest


  {


  public static void main(String[] args)


  {


  Hashtable numbers=new Hashtable(); //新建一个hashtable类的实例


  numbers.put(new MyKey("ZhangSan",18),new Integer(1)); 装入数据


  numbers.put(new MyKey("LiSi",20),new Integer(2));


  numbers.put(new MyKey("WangWu",16),new Integer(3));


  Enumeration e=numbers.keys();


  while(e.hasMoreElements())


  {


  MyKey Key=(MyKey)e.nextElement();


  System.out.print(Key+"=");


  System.out.println(numbers.get(Key));


  }


  }


  }


  编辑推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2011年计算机二级考试JAVA知识点.. 下一篇2011年计算机二级考试JAVA知识点..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: