Java:重写equals()和hashCode()
Java:重写equals()和hashCode()
- package com.zj.unit;
- import java.util.Arrays;
- public class Unit {
- private short ashort;
- private char achar;
- private byte abyte;
- private boolean abool;
- private long along;
- private float afloat;
- private double adouble;
- private Unit aObject;
- private int[] ints;
- private Unit[] units;
- public boolean equals(Object o) {
- if (!(o instanceof Unit))
- return false;
- Unit unit = (Unit) o;
- return unit.ashort == ashort
- && unit.achar == achar
- && unit.abyte == abyte
- && unit.abool == abool
- && unit.along == along
- && Float.floatToIntBits(unit.afloat) == Float
- .floatToIntBits(afloat)
- && Double.doubleToLongBits(unit.adouble) == Double
- .doubleToLongBits(adouble)
- && unit.aObject.equals(aObject)
- && equalsInts(unit.ints)
- && equalsUnits(unit.units);
- }
- private boolean equalsInts(int[] aints) {
- return Arrays.equals(ints, aints);
- }
- private boolean equalsUnits(Unit[] aUnits) {
- return Arrays.equals(units, aUnits);
- }
- public int hashCode() {
- int result = 17;
- result = 37 * result + (int) ashort;
- result = 37 * result + (int) achar;
- result = 37 * result + (int) abyte;
- result = 37 * result + (abool ? 0 : 1);
- result = 37 * result + (int) (along ^ (along >>> 32));
- result = 37 * result + Float.floatToIntBits(afloat);
- long tolong = Double.doubleToLongBits(adouble);
- result = 37 * result + (int) (tolong ^ (tolong >>> 32));
- result = 37 * result + aObject.hashCode();
- result = 37 * result + intsHashCode(ints);
- result = 37 * result + unitsHashCode(units);
- return result;
- }
- private int intsHashCode(int[] aints) {
- int result = 17;
- for (int i = 0; i < aints.length; i++)
- result = 37 * result + aints[i];
- return result;
- }
- private int unitsHashCode(Unit[] aUnits) {
- int result = 17;
- for (int i = 0; i < aUnits.length; i++)
- result = 37 * result + aUnits[i].hashCode();
- return result;
- }
- }
Java:重写equals()和hashCode()的更多相关文章
- Java重写equals()和hashCode()
1.何时需要重写equals() 当一个类有自己特有的 ”逻辑相等”概念(不同于对象身份的概念). 2.设计equals() [1]使用instanceof操作符检查 ”实参是否为正确的类型”. [2 ...
- java重写equals和hashCode方法
一.重写equals方法 如果不重写equals,那么比较的将是对象的引用是否指向同一块内存地址,重写之后目的是为了比较两个对象的value值是否相等. 利用equals比较八大包装对象(如int,f ...
- Java 重写 equals 与 hashCode 的注意事项
为什么重写 equals 的时候必须重写 hashCode 大家可能从很多教程中了解到: SUN官方的文档中规定"如果重定义equals方法,就必须重定义hashCode方法,以便用户可以将 ...
- hashCode之二--Java:重写equals()和hashCode()
以下内容总结自<Effective Java>. 1.何时需要重写equals() 当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念). 2.设计equals() [1]使用in ...
- Java 重写equals()与hashCode()方法
List对象的contains方法实际上也是调用的equals()方法来进行逐条对比的. 示例代码: package com.imooc.collection; /** * 课程类 */ public ...
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例 原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...
- java中equals与hashCode的重写问题
这几天有一个朋友问我在重写equals和hashCode上出现了问题,最后我帮她解决了问题,同时也整理出来分享给大家 现上Object的equals与HashCode的代码 public boolea ...
- Java中equals()和hashCode()的关系以及重写equals()和hashCode()的重要性
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6580647.html 一:关系 如果两个对象相等(equal),它们的hashcode一定相同: 如果两个对 ...
- Java实战equals()与hashCode()
一.equals()方法详解 equals()方法在object类中定义如下: 代码 public boolean equals(Object obj) { return (this == obj); ...
随机推荐
- ios开发UI篇—UISlider
概述 UISlider用于从连续范围的值中选择单个值的控件. 当您移动滑块的大拇指时,会将其更新后的值传递给附加的任何动作.滑块的外观是可配置的; 您可以对曲目和大拇指进行着色,并提供出现在滑块末端的 ...
- 自己动手写一个简易对象关系映射,ORM(单例版和数据库池版)
准备知识 DBUtils模块 <<-----重点 DBUtils是Python的一个用于实现数据库连接池的模块 此连接池有两种连接模式: DBUtils提供两种外部接口: Persist ...
- python实现用户登录问候
创建一个至少包含 5个用户名的列表,且其中一个用户名为 'admin' .想象你要编写代码,在每位用户登录网站后都打印一条问候消息.遍历用户名列表,并向每位用户打印一条问候消息.添加一条 if 语句, ...
- jQuery|简单tab栏切换
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Hammer.js 实现移动端元素的拖拽库
1. Pan事件:在指定的dom区域内,一个手指放下并移动事件,即触屏中的拖动事件.这个事件在屏触开发中比较常用,如:左拖动.右拖动等,如手要上使用QQ时向右滑动出现功能菜单的效果.该事件还可以分别对 ...
- MongoDB基础教程
MongoDB 一.下载MongoDB数据库 1.进入MongoDB官网进行下载,网址:https://www.mongodb.com/. 2.下载完成后可进行安装,安装后,并有了MongoDB服务. ...
- laravel when 的用法
当你在使用where语句有前提条件时,比如某值为1的时候才执行where子句,否则不执行,这个时候,laravel5.5新出了一个简便方法when($arg,fun1[,fun2]). 具体用法如下: ...
- day1-exercise
""" Day1 作业 Isabelle/刘佳赐 October 22, 2018 """ """ 1. 变量 ...
- python学习笔记(四):pandas基础
pandas 基础 serise import pandas as pd from pandas import Series, DataFrame obj = Series([4, -7, 5, 3] ...
- 20155218 2016-2017-2 《Java程序设计》第9周学习总结
20155218 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC全名Java DataBase Connectivity,是java联机数据库的标准 ...