一名java培训生的学习笔记(基础部分2).doc

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一名java培训生的学习笔记(基础部分2)

第十三章 2007年6月17日 星期日 授课教师:老刘 学生: 王洪峰 第一节 HashMap类常见的方法及其用法 public class Test { public static void main(String[] args) { //创建5个Bean的对象b1-b5并对它们进行初始化 Bean b1=new Bean(); b1.setAge(23); b1.setName(Bob); Bean b2=new Bean(); b2.setAge(23); b2.setName(Bob); Bean b3=new Bean(); Bean b4=new Bean(); b4.setAge(30); b4.setName(Jack); Bean b5=new Bean(); b5.setAge(29); b5.setName(wang); HashMap h=new HashMap(); //创建HashMap类型对象h; //并调用put方法,将它们取个key名(外号),加入到Map中 h.put(1,b1); h.put(2,b2); h.put(3,b3); h.put(4,b4); h.put(5,b5); h.remove(3); //调用remove()方法,将key值为3的元素移除HashMap System.out.println(h.size()); //输出Map中的元素数 Bean temp=(Bean)h.get(5); //将key值为5的元素取出来,并恢复其Bean身份,并其引用返回给temp System.out.println(temp.getAge()); System.out.println(temp.getName()); //输出key值为5的属性值 } } 第二节 equals方法和hashCode方法的重写 在处理两个对象之间关系时,有时会需要判断两个对象是否相等,如果他们的引用指向的是同一个对象,那么它们是相等的。如Object中的equals方法。如果它们指向的是同一类型的不同对象,但是他们的属性值是相等的,也就是说它们的内容是相等的,那么我们就需要重写equals方法,例如:String中的equals方法就是Object中的equals方法的重写。如果我们自己定义一个类,需要将自己写的类型的两个对象equals。那么我们就需要在该类中重写Object中的equals方法。 重写完equals方法后还需要重写hashCode方法。因为当我们用Hash容器(如HashMap、HashSet)装载这些对象时,例如,将一个对象用add方法加入Set时,会产生一个HashCode,当我们又创建一个同类型内容相同的对象时,又变成另外一个HashCode了,它们在容器中的HashCode是随机的生成的,那么你就无法取得该对象了。如果我们要判断容器中是否装进了某种类型的对象,那么就需要重写hashCode方法,因为equals方法返回true的对象,它们的hashCode是相同的,重写hashCode方法就是让计算机在同一HashCode中寻找,否则计算机出于Hash容器的高效性考虑,不会去在已经存放该对象的hashCode中寻找,当然也就找不到了。 重写equals方法和hashCode public class Money { //创建名叫Money这个类 public int value = 0; //定义int型数据成员value,并初始化为0。 public Money(){ //创建无参数的构造方法 } public Money(int i){ //带有参数的构造方法 value = i; } public boolean equals(Object obj){ //重写时需要注意重写的方法定义的要求 if (obj==null){ //判断形参的是否为空。如果是,返回false return false; } if(this==obj){ //判断形参对象与调用该方法的当前对象是否指向同一对象,如果是返回true. return true; } if(!(obj instanceof Money)){ //判断形参对象是否是Money的实例,如果不是,返回false. return false; } Money mo=(Money)obj

文档评论(0)

sb9185sb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档