java HashSet类实现哈希表

 /*HashSet 类实现哈希表(散列表)
我们应该为插入到 哈希表的各个对象重写 hashCode()和equals() 方法 
String 类重写的   hashCode() 是根据字符串计算的  
Object 类的       hashCode() 是根据内存地址计算散列地址
哈希表只能通过迭代器迭代元素 Iterator
*/
import java.util.*;
class HashTest
{
 public static void main(String []args)
 {
  HashSet hs=new  HashSet() ;  //HashSet 实现了Set接口不能 包含重复值
  hs.add(new Student(1,"li")); 
  hs.add(new Student(2,"wang"));
  hs.add(new Student(1,"wangwu"));
  hs.add(new Student(1,"li"));
  Iterator i=hs.iterator(); //获得哈希表迭代器
  while(i.hasNext())  //通过迭代器输出元素
  {
   System.out.println(i.next());
  }
  
  
  
  
 }
 
 
}
class  Student
{
 int num ;
 String name;
 Student(int num,String name)
 {
  this.num=num;
  this.name=name;
 }
 public String toString ()  //重写toString
 {
  return num+":"+name;
 }
 
 public int hashCode()   //重写 hashCode()  
 {
  return num*name.hashCode();
 }
 public boolean equals(Object o) //重写equals()方法
 {
  Student s=(Student)o;
    return num==s.num && name.equals(s.name);
 }
 
}

转载于:https://www.cnblogs.com/mosatsu/archive/2011/08/08/2466886.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值