`
wolfcame
  • 浏览: 79374 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

how to write a HashCode()

    博客分类:
  • J2SE
阅读更多
/**
 * 
 */
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的用法详解

    hashCode 是一种用于查找和排序的机制,在数据结构中 plays a crucial role。下面我们将对 hashCode 的用法进行详细的解释。 hashCode 的作用 hashCode 的主要作用是用于查找和排序。在查找和排序的过程中,我们...

    深入 HashCode 方法~

    ### 深入理解 HashCode 方法 #### 一、HashCode 的基本概念与作用 在 Java 编程语言中,`HashCode` 是一个非常重要且基础的概念。简单来说,`HashCode` 是一个整数值,用于快速定位对象的位置。在 Java 中,每一个...

    java中Hashcode的作用.docx

    "Java中Hashcode的作用" Hashcode是Java编程语言中一个非常重要的概念,它在equals方法中扮演着关键角色。在Java中,每个对象都具有一个独特的Hashcode,它可以用来标识对象的身份。但是Hashcode是什么?它是如何...

    重写equals和hashcode方法_equals_重写equals和hashcode方法_

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是Object类中的两个核心方法,所有类都默认继承自Object类。这两个方法在处理对象比较和集合操作时起着至关重要的作用。当我们创建自定义类并需要对对象进行精确...

    深入HashCode

    《深入HashCode》 在计算机科学领域,特别是在Java和许多其他面向对象编程语言中,`hashCode()`方法是一个至关重要的概念。这个方法是每个对象都具备的,它返回一个整数值,通常用于快速比较对象或者在哈希表(如...

    Object类的hashCode的用法3---马克-to-win java视频

    Object类的hashCode的用法 马克-to-win java视频哈希码

    hashcode的作用

    ### HashCode的作用详解 #### 一、HashCode的基本概念 在Java中,`hashCode()` 方法是 `Object` 类的一个重要成员方法,它返回一个整数,这个整数通常用来表示对象的哈希值。哈希值在Java集合框架中扮演着至关重要...

    hashCode的作用

    ### hashCode的作用 在Java编程语言中,`hashCode`方法是一个重要的概念,主要用于对象的查找与存储,尤其是在集合框架中有着广泛的应用。为了更好地理解`hashCode`的作用及其在实际开发中的重要性,我们可以从以下...

    equals与hashCode方法讲解

    equals 与 hashCode 方法讲解 equals 方法和 hashCode 方法是 Java 语言中两个重要的方法,它们都是在 Object 类中定义的。equals 方法用于比较两个对象是否相等,而 hashCode 方法用于返回对象的哈希码。 在 Java...

    java中hashcode()和equals()的详解

    在Java编程语言中,`hashCode()`和`equals()`方法是对象身份验证的关键组成部分,它们主要用于对象的比较和哈希表(如HashMap、HashSet等)的操作。理解这两个方法的工作原理对于编写高效和可靠的代码至关重要。 ...

    HashCode相同equals不同的2位字符集合算法

    例如,'A'和'a'的ASCII值相差32,但它们的哈希码可能相同,因为哈希函数可能无法区分这种差异。 在这种情况下,我们需要在自定义类中正确地实现`hashCode()` 和 `equals()` 方法。对于2位字符集合,我们可以考虑...

    hashcode和equals方法

    equals()和hashcode()这两个方法都是从object类中继承过来的。当String 、Math、还有Integer、Double。。。。等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法.

    PPT浅析hashcode

    PPT浅析hashcode定义和作用;和简单的代码演示PPT.很简单的

    hashCode的理解

    java中hashCode()的理解

    复写hashCode()方法,和equasl()方法

    hs.add(new Person1("a", 11)); hs.add(new Person1("b", 12)); hs.add(new Person1("b", 12)); ``` 由于`Person1`类已经正确实现了`hashCode()`和`equals()`方法,所以当尝试添加第二个`Person1("b", 12)`时,`...

    关于HashCode码的重复问题 两种验证实例

    1,如果两个对象相同,那么它们的hashCode值一定要相同; 2,如果两个对象的hashCode相同,它们并不一定相同 上面说的对象相同指的是用eqauls方法比较。 3,HashCode码不唯一

    java中hashcode()和equals()方法详解

    ### Java中`hashCode()`与`equals()`方法详解 #### 前言 在Java编程语言中,`hashCode()`和`equals()`方法是非常重要的概念,它们不仅对于深入理解Java内存管理至关重要,也是实现自定义类的关键部分之一。本文将...

    Java重写equals同时需要重写hashCode的代码说明

    Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.

    Java_重写equals()和hashCode()

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是对象的基本组成部分,它们在很多场景下都发挥着至关重要的作用。这两个方法与对象的相等性比较和哈希表(如HashMap、HashSet)的运作紧密相关。这篇博客将深入...

Global site tag (gtag.js) - Google Analytics