当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015计算机等级考试二级JAVA学习要点整理(九)
发布时间:2011/7/23 15:35:20 来源:www.xue.net 编辑:城市总裁吧

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

  }

  }

  }

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved