/**
*
*/
package cn.fsf.annotation;
/**
* this class shows that how to write a proper hashCode()
*
* @author FSF
*
*/
public class HashCodeExample {
private boolean aBoolean = true;
private byte aByte = 1;
private char aChar = 'd';
private int aInt = 10;
private long aLong = 30;
private float aFloat = 89;
private double aDouble = 90.34;
private String aStr = "test";
private String[] aArray = { "df", "cs" };
@Override
public int hashCode() {
int lResult = 17;
// first step,collect all usefull fields hashCode in a proper way,
// the principle is that the code must generate fast and simple
int lBooleanCode = aBoolean ? 1 : 0;
int lByteCode = aByte;
int lCharCode = aChar;
int lIntCode = aInt;
int lLongCode = (int) (aLong ^ (aLong >>> 32));
int lFloatCode = Float.floatToIntBits(aFloat);
long lDoubleCodeTemp = Double.doubleToLongBits(aDouble);
int lDoubleCode = (int) (lDoubleCodeTemp ^ (lDoubleCodeTemp >>> 32));
int lStrCode = aStr.hashCode();
int lArrayCode = 0;
if (aArray != null && aArray.length > 0) {
for (int i = 0; i < aArray.length; i++) {
lArrayCode += aArray[i].hashCode();
}
}
// get the sum of them
int lSumCode = lBooleanCode + lByteCode + lCharCode + lIntCode
+ lLongCode + lFloatCode + lDoubleCode + lStrCode + lArrayCode;
// generate the hashCode
lResult = 31 * lResult + lSumCode;
return lResult;
}
public static void main(String[] args) {
HashCodeExample lExample = new HashCodeExample();
System.out.println(lExample.hashCode());
}
}
分享到:
相关推荐
hashCode 是一种用于查找和排序的机制,在数据结构中 plays a crucial role。下面我们将对 hashCode 的用法进行详细的解释。 hashCode 的作用 hashCode 的主要作用是用于查找和排序。在查找和排序的过程中,我们...
### 深入理解 HashCode 方法 #### 一、HashCode 的基本概念与作用 在 Java 编程语言中,`HashCode` 是一个非常重要且基础的概念。简单来说,`HashCode` 是一个整数值,用于快速定位对象的位置。在 Java 中,每一个...
"Java中Hashcode的作用" Hashcode是Java编程语言中一个非常重要的概念,它在equals方法中扮演着关键角色。在Java中,每个对象都具有一个独特的Hashcode,它可以用来标识对象的身份。但是Hashcode是什么?它是如何...
在Java编程语言中,`equals()` 和 `hashCode()` 方法是Object类中的两个核心方法,所有类都默认继承自Object类。这两个方法在处理对象比较和集合操作时起着至关重要的作用。当我们创建自定义类并需要对对象进行精确...
《深入HashCode》 在计算机科学领域,特别是在Java和许多其他面向对象编程语言中,`hashCode()`方法是一个至关重要的概念。这个方法是每个对象都具备的,它返回一个整数值,通常用于快速比较对象或者在哈希表(如...
Object类的hashCode的用法 马克-to-win java视频哈希码
### HashCode的作用详解 #### 一、HashCode的基本概念 在Java中,`hashCode()` 方法是 `Object` 类的一个重要成员方法,它返回一个整数,这个整数通常用来表示对象的哈希值。哈希值在Java集合框架中扮演着至关重要...
### hashCode的作用 在Java编程语言中,`hashCode`方法是一个重要的概念,主要用于对象的查找与存储,尤其是在集合框架中有着广泛的应用。为了更好地理解`hashCode`的作用及其在实际开发中的重要性,我们可以从以下...
equals 与 hashCode 方法讲解 equals 方法和 hashCode 方法是 Java 语言中两个重要的方法,它们都是在 Object 类中定义的。equals 方法用于比较两个对象是否相等,而 hashCode 方法用于返回对象的哈希码。 在 Java...
在Java编程语言中,`hashCode()`和`equals()`方法是对象身份验证的关键组成部分,它们主要用于对象的比较和哈希表(如HashMap、HashSet等)的操作。理解这两个方法的工作原理对于编写高效和可靠的代码至关重要。 ...
例如,'A'和'a'的ASCII值相差32,但它们的哈希码可能相同,因为哈希函数可能无法区分这种差异。 在这种情况下,我们需要在自定义类中正确地实现`hashCode()` 和 `equals()` 方法。对于2位字符集合,我们可以考虑...
equals()和hashcode()这两个方法都是从object类中继承过来的。当String 、Math、还有Integer、Double。。。。等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法.
PPT浅析hashcode定义和作用;和简单的代码演示PPT.很简单的
java中hashCode()的理解
hs.add(new Person1("a", 11)); hs.add(new Person1("b", 12)); hs.add(new Person1("b", 12)); ``` 由于`Person1`类已经正确实现了`hashCode()`和`equals()`方法,所以当尝试添加第二个`Person1("b", 12)`时,`...
1,如果两个对象相同,那么它们的hashCode值一定要相同; 2,如果两个对象的hashCode相同,它们并不一定相同 上面说的对象相同指的是用eqauls方法比较。 3,HashCode码不唯一
### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`和`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
在Java编程语言中,`equals()` 和 `hashCode()` 方法是对象的基本组成部分,它们在很多场景下都发挥着至关重要的作用。这两个方法与对象的相等性比较和哈希表(如HashMap、HashSet)的运作紧密相关。这篇博客将深入...