java第八周作业

分析代码:

public final class LineItemKey implements Serializable {
private Integer customerOrder;
private int itemId;
public LineItemKey() {}
public LineItemKey(Integer order, int itemId) {
this.setCustomerOrder(order);
this.setItemId(itemId);
}
@Override
public int hashCode() {
return ((this.getCustomerOrder() == null
? 0 : this.getCustomerOrder().hashCode())
^ ((int) this.getItemId()));
}
@Override
public boolean equals(Object otherOb) {
if (this == otherOb) {
return true;
}
if (!(otherOb instanceof LineItemKey)) {
return false;
}
LineItemKey other = (LineItemKey) otherOb;
return ((this.getCustomerOrder() == null
? other.getCustomerOrder() == null : this.getCustomerOrder()
.equals(other.getCustomerOrder()))
&& (this.getItemId() == other.getItemId()));
}
@Override
public String toString() {
return "" + getCustomerOrder() + "-" + getItemId();
}
/* Getters and setters */
}

其中hashCode的作用是:

当我们向一个集合中添加某个元素,集合会首先调用hashCode方法,这样就可以直接定位它所存储的位置,若该处没有其他元素,则直接保存。若该处已经有元素存在,就调用equals方法来匹配这两个元素是否相同,相同则不存,不同则散列到其他位置。这样处理,当我们存入大量元素时就可以大大减少调用equals()方法的次数,极大地提高了效率。

所以hashCode在上面扮演的角色为寻域(寻找某个对象在集合中区域位置)。hashCode可以将集合分成若干个区域,每个对象都可以计算出他们的hash码,可以将hash码分组,每个分组对应着某个存储区域,根据一个对象的hash码就可以确定该对象所存储区域,这样就大大减少查询匹配元素的数量,提高了查询效率。这里由于customerOrder和itemId一起组成一个复合键来标示一个实体,所以如果customerOrder不存在则返回0,如果存在则返回customerOrder的hash值^itemId的数值。

equal的作用:

equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。这里是比较两个对象是否相同,如果相同则返回true,如果不相同则返回false。

原文地址:https://www.cnblogs.com/xiangyujojo/p/8966741.html

时间: 2025-01-04 16:17:39

java第八周作业的相关文章

2017-2018-1 JAVA实验站 第八周作业

2017-2018-1 JAVA实验站 第八周作业 团队分工 UML 用例图 类图 活动图 状态图 工具选择 windows系统自带的画图软件 ProcessOn

2018-4-29 第八周作业

2018-4-29 第八周作业 网络攻防环境搭建 第八周作业: =网络攻防环境搭建 教材学习: 本次介绍了linux基本架构,Linux的远程攻防技术,Linux系统结构. 具体可以参考一下链接. =linux基本架构 =linux系统结构 kali视频课: SET工具的使用 嗅探欺骗,中间人攻击: 原文地址:https://www.cnblogs.com/nalanruntu/p/8970433.html

软件工程_东师站_第八周作业

一.PSP Date Type Job Start Interrupt(min) End Total(min) 20160417 助教 黄金点 20:00 5 21:00 55 20160418 助教 黄金点 19:00 12 21:00 108 20160419 助教 黄金点 18:45 100 23:00 155 20160420 助教 团队作业 10:00 35 11:20 45 20160425 结对编程 四则运算 19:00 5 19:30 25 ? 二.进度条 ? 代码行数 博客字数

软件项目与过程管理第八周作业

内容:软件项目与过程管理课程内容总结 经过八周时间的学习,软件项目与过程管理课程已经逐渐接近了尾声.通过这八周的学习,我对软件项目与过程管理课程有了更深的理解. 一.关于团队项目. 团队项目是本次软件项目与过程管理课程中最重要的一部分.我们团队项目是作业管理系统.在项目开发的整个过程中,我们在项目经理的带领下,项目团队的每一个成员团结合作.相互沟通,团队成员之间相互学习彼此的优点和技术,在每个成员的共同努力下,基本完成了此次软件开发项目. 通过这次团队项目, 我的总结如下: 1.在项目的开发过程

20165326 java第八周学习笔记

第八周学习笔记 知识点总结 1.进程与线程 进程:程序的一次动态执行过程 区别:进程和线程的区别? 进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元 同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器.堆栈.上下文),一个进行至少包括一个线程. Java的多线程机制.Java内置对多线程的支持.我们的计算机在任何给定说的时刻只能执行线程中的一个,Java虚拟机只是从一个线程迅速地切换到另一个线程. 当main方法中有其他线程时,JVM一直要等到Java应用程序中的

2017-2018-2 20179215《网络攻防实践》第八周作业

<网络攻防实践> 第八周 学习总结 一.第八章教材内容总结 Linux 操作系统简介 Linux 系统特点: 兼容UNIX :API 兼容,管理命令和各种工具: 源码开放 支持各种硬件平台,支持多CPU Linux 平台上存在大量的应用软件,以及应 用开发工具 多种不同发行版: RedHat(RHEL,Fedora, CentOS, -),Ubuntu,Debian, - 2.Linux 操作系统: 不是微内核系统,但具有某些微内核特征 Intel 版本:i386 的保护模式,特权级 内核态(

软件过程与项目管理第八周作业

软件过程与项目管理第8周作业 关于未来实体商城会不会消失的问题 现在网上购物.电子商务越来越流行.普遍,极大的方便了大众的生活,同时也给实体店带来巨大的压力.尽管如此,我认为实体商城不会有消失的那天. 不管未来物流达到如何发达的程度,实体商城仍然有其不可取代的价值.下面就举几个例子: 比如说服装店,虽然说在网上买衣服可以足不出户,也不用考虑天气.但对于很多女孩子来说,逛街(绝大部分是在逛服装店)绝不是为了单纯的去买衣服,也有很多人很享受逛的这个过程,试衣服的过程,或者和同伴消磨休闲时间,促进感情

java第八周学习总结

学号20145336 <Java程序设计>第8周学习总结 教材学习内容总结 日志API 使用日志的起点是Logger类,LOgger实例的创建有许多要处理的要素,LOgger类的构造函数标识为protected,不是java.util.logging同包的类不能直接以new创建,要取得Logger实例,必须使用Logger的静态方法getlogger(). 调用getLogger()是,必须指定Logger实例所属名称空间,名称空间以“.”作为层级区分,名称空间层级相同的Logger其父Log

Java第十一周作业

1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 关键字:try...catch...finally,try...catch...,try...finally... Error与Exception的区别: | - Error:指的是JVM的错误,在程序执行前出错,用户无法操作处理 | - Exception: 指的是程序执行过程中出错,用户可以处理 因此所谓的异常处理指的就是所有的Exception以及它的子类异常的处理. throws和throw的区别: | -t