`
fourfire
  • 浏览: 411336 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

equals与hashcode方法的调用

    博客分类:
  • Java
阅读更多
将对象放在hashset中时
1 先调用hashcode获得一个散列的数,通过内部hash算法,计算出存放的位置,
2 在该位置检查是否与该位置的对象相等(调用equals方法),如果等则不放入该对象,如果不等则将该对象放在该位置的第一个
java 代码
 
  1. public class A {  
  2.     private String name;  
  3.   
  4.     /** 
  5.      * @return the name 
  6.      */  
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.   
  11.     /** 
  12.      * @param name 
  13.      *            the name to set 
  14.      */  
  15.     public void setName(String name) {  
  16.         this.name = name;  
  17.     }  
  18.   
  19.     /* 
  20.      * (non-Javadoc) 
  21.      *  
  22.      * @see java.lang.Object#equals(java.lang.Object) 
  23.      */  
  24.     @Override  
  25.     public boolean equals(Object obj) {  
  26.         System.out.println("equals");  
  27.         return true;  
  28.   
  29.     }  
  30.   
  31.     /* 
  32.      * (non-Javadoc) 
  33.      *  
  34.      * @see java.lang.Object#hashCode() 
  35.      */  
  36.     @Override  
  37.     public int hashCode() {  
  38.         System.out.println("hashcode");  
  39.         return 1;  
  40.     }  
  41.   
  42. }  
java 代码
 
  1. public void testHashA() {  
  2.         A a = new A();  
  3.         Set l = new HashSet();  
  4.         for (int i = 0; i < 10; i++) {  
  5.             a = new A();  
  6.             a.setName(String.valueOf(i));  
  7.             l.add(a);  
  8.         }  
  9.         System.out.println(l.size());  
  10.         for (Iterator iter = l.iterator(); iter.hasNext();) {  
  11.             A element = (A) iter.next();  
  12.             System.out.println(element.getName());  
  13.   
  14.         }  
  15.   
  16.     }  
输出为:
hashcode
hashcode
equals
hashcode
equals
hashcode
equals
hashcode
equals
hashcode
equals
hashcode
equals
hashcode
equals
hashcode
equals
hashcode
equals
1//只有一个元素
0//第一个元素
List、map加入对象时不会调用着两个方法
分享到:
评论

相关推荐

    equals与hashCode在实际开发中的重写写法

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是两个非常重要的成员,尤其是在处理对象比较和集合操作时。这两个方法通常与`Object`类中的默认实现相关联,但为了在实际开发中实现正确的对象比较和哈希表操作...

    Java中equals,hashcode和==的区别

    默认情况下,equals 方法都是调用 Object 类的 equals 方法,而 Object 的 equals 方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。因此,如果我们想要比较两个对象的内容,我们需要重写 ...

    深入理解equals和hashCode方法

    但是,我们在重写equals方法时,也需要重写hashCode方法,以保证对象的哈希码与equals方法的结果一致。 equals和hashCode的关系 equals和hashCode方法之间存在紧密的关系。在重写equals方法时,我们也需要重写...

    Java容器集合(equals 和 hashCode+基础数据结构+ArrayList+Vector和LinkedList)

    其中,equals和hashCode方法是Java容器集合中两个非常重要的方法,本文将详细介绍这两个方法,并结合ArrayList、Vector和LinkedList三个常见的容器集合。 一、equals方法 equals方法是Java中用于比较两个对象是否...

    Java equals 方法与hashcode 方法的深入解析.rar

    在Java编程语言中,`equals()`方法和`hashCode()`方法是两个非常重要的概念,它们主要用于对象的比较和哈希表的高效运作。本解析将深入探讨这两个方法的用途、实现原理以及它们之间的关联。 首先,`equals()`方法是...

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

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

    equals 和 hashCode两者效果分析详解.docx

    在HashMap中,当我们尝试插入一个键值对时,它首先调用键对象的`hashCode()`方法,将哈希码转换为数组的索引位置。如果在该位置上已经有其他对象,HashMap会使用`equals()`方法来检查新插入的键是否与已存在的键相等...

    set接口经常用的hashCode和equals方法详解

    - **性能考虑**: 为了提高性能,只有当两个对象的`hashCode`相同的情况下,才会调用`equals`方法进行深度比较。 - **一致性要求**: `equals`方法需要满足对称性、反射性、传递性和一致性等性质,以确保集合操作的...

    深入 HashCode 方法~

    - 一致性原则:同一个对象在不同时间调用 `hashCode()` 方法应该返回相同的值,除非对象的状态发生改变。 #### 三、HashCode 与哈希表的关系 1. **哈希表的工作原理**: - 哈希表是一种基于数组的数据结构,通过...

    【面试】hashCode与equals两者之间的关系 / == 和equals / 为什么要重写equals方法 / 重写equals /hashcode方法 / 为什么要重写hashCode方法

    重写`hashCode()`时,应确保它与`equals()`方法的逻辑一致。通常,`hashCode()`应该基于对象的那些参与`equals()`比较的属性来计算。如果两个对象`equals()`相等,它们的`hashCode()`应该返回相同的整数值。如果`...

    关于hashCode()和equals()的本质区别和联系

    如果我们忽略 equals() 和 hashCode() 方法,那么我们将不能可靠地检索相关的值,除非我们在 get() 调用中使用与 put() 调用中极其类似的对象实例。这要求确保在我们的整个程序中,只能使用对应于特定整数值的对象的...

    探索Java中的equals()和hashCode()方法_动力节点Java学院整理

    Java中的equals()和hashCode()方法详解 Java中的equals()和hashCode()方法是两个重要的方法,它们都是从Object类中继承过来的。equals()方法用于比较两个对象的值是否相等,而hashCode()方法用于计算对象的哈希码。...

    学习Object类——为什么要重写equeals和hashcode方法

    Object 类的 equals 和 hashCode 方法的重要性与实现 在 Java 编程语言中,Object 类是所有类的父类,但是在实际开发中,我们往往需要重写 Object 中的 equals 和 hashCode 方法,以便正确地比较对象的逻辑内容,而...

    Java_重写equals()和hashCode()

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

    重写hashCode()和equals()方法详细介绍

    在Java编程中,`equals()` 和 `hashCode()` 方法是Object类中的两个重要方法,它们在处理对象相等性以及在哈希表(如HashSet、HashMap)中起到关键作用。当自定义类时,有时需要根据业务逻辑重写这两个方法以满足...

    hashcode和equals的分析

    ### hashCode和equals方法详解 #### 一、hashCode方法解析 在深入探讨`hashCode`方法之前,我们需要了解Java集合框架的基本概念。Java集合框架主要包括两大类集合:`List`和`Set`。 - **List**:这是一个有序集合...

    java中hashcode和equals的详解.pdf

    这样一来,当集合要添加新的元素时,先调用这个元素的 hashCode 方法,就一下子能定位到它应该放置的物理位置上。 五、equals 方法的实现机制 equals 方法的实现机制是基于内容比较的。equals 方法会比较两个对象...

    hashcode()和equals()

    在Java编程语言中,`hashCode()` 和 `equals()` 方法是两个非常重要的概念,尤其是在处理对象比较和哈希表(如 `HashMap` 或 `HashSet`)时。这两个方法来源于 `Object` 类,是所有Java类的基类,因此,每个自定义类...

    java 基础之(equals hashcode)

    `hashCode()` 方法与 `equals()` 密切相关,因为它们共同决定了对象在哈希表中的行为。当两个对象通过 `equals()` 认为是相等的,它们的 `hashCode()` 值也应该相等。这很重要,因为哈希表(如 `HashMap`)依赖于 `...

    Java equals 方法与hashcode 方法的深入解析

    `equals()` 方法用于判断两个对象是否相等,而 `hashCode()` 方法则与对象的哈希值有关,这对于理解和使用Java中的集合框架至关重要。 `equals()` 方法是Object类的一个成员方法,它的默认行为是基于引用比较,即...

Global site tag (gtag.js) - Google Analytics