当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级考试JAVA知识点整理(9)
发布时间:2010/12/12 18:17:32 来源:城市学习网 编辑:ziteng
  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