- 1、本文档共75页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 5.5资金结算与财务的接口流程配置.doc
- 6 授予硕士学位基本数据表(专业学位专用).doc
- 6、基础.doc
- 6、药品生产监督管理试题.doc
- 7.5秒:品牌时代的电视广告规格.doc
- 7+1健康大药房药品质量管理制度目录.doc
- 71自己的花是让别人看的.doc
- 6习题.doc
- 74芯片系列功能.doc
- 7月工作总结-01.doc
- 人工智能视角下区域教育评价改革利益相关者协调研究——以均衡发展为目标的应用实践教学研究课题报告.docx
- 《金融科技在消费金融领域的应用:基于金融科技伦理的监管策略》教学研究课题报告.docx
- 智能法律服务2025年法律科技人才培养需求分析报告.docx
- 《智能安防视频监控中的行为分析技术在智能工厂安全监控中的应用》教学研究课题报告.docx
- 智能电网背景下2025年数据中心绿色认证体系构建与优化.docx
- 智能电网背景下2025年储能技术产业政策与市场分析报告.docx
- 智能网联汽车2025年智能网联汽车车联网信息安全与监管报告.docx
- 智能监管2025剧本杀行业,内容技术革新分析报告.docx
- 智能穿戴设备用户付费意愿与市场前景研究报告.docx
- 初中化学家庭实验课程资源开发:以实验探究能力培养为核心教学研究课题报告.docx
文档评论(0)