`
fourfire
  • 浏览: 407013 次
  • 性别: 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加入对象时不会调用着两个方法
分享到:
评论

相关推荐

    aequum:Aequum 库旨在通过使用 Java 8 lambdas 在 POJO 类上编写 equals、hashCode 和 compareTo 方法时帮助删除一些样板

    ###Responsibilities### Aequum 库旨在通过使用在 POJO 类上编写equals 、 hashCode和compareTo方法时帮助删除一些样板。 请注意,此库依赖于 Java 8。 ###组件初始化指令###要使用此库,调用builder的方法Aequum...

    javaee_tedu_day09.zip

    ATM系统 Clone方法 toString方法:表示返回对象的字符串表示形式 包名.类名@hashCode(内存地址) 打印对象时,默认调用 如果不是想使用object类,toString...如果equal返回true的话,hashCode相同,重写hashCode方法

    Java中hashCode的作用

    以下是关于HashCode的官方文档定义:  hashcode方法返回该对象的哈希码值。...  如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相

    HashCode作用_动力节点Java学院整理

    Java集合中有两类,一类是List,一类是Set他们之间的...比如我们向HashSet插入1000数据,难道我们真的要迭代1000次,调用1000次equals()方法吗?hashCode提供了解决方案。怎么实现?我们先看hashCode的源码(Object)。

    廖雪峰 Java 教程.doc

    编写equals和hashCode 使用EnumMap 使用TreeMap 使用Properties 使用Set 使用Queue 使用PriorityQueue 使用Deque 使用Stack 使用Iterator 使用Collections IO File对象 InputStream OutputStream ...

    EasyMock介绍及安装方法

    EasyMock 是一种模拟测试的框架,用于辅助模拟测试。...不能 mock 类的一些特殊方法:equals(),toString() 和 hashCode()。原因是 EasyMock 在实现时为每个 class mock 对象提供了内建的以上三个方法。

    jdk1.8.zip

    jdk1.8新特性知识点: ...方法,计算出哈希码值,经过哈希算法算成数组的索引值,如果对应的索引处没有元素,直接存放,如果有对象在,那么比较它们的equals方法比较内容 如果内容一样,后一个value会将前一个value

    安卓java读取网页源码-InterviewQuation:安卓面试的一些问题

    3)默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法, 而Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象) 4)要是类中覆盖了equals方法,那么就要...

    jdk1.8中文文学习手册

    在jdk1.8中对hashMap等map集合的数据结构优化。hashMap数据结构的优化 ...方法,计算出哈希码值,经过哈希算法算成数组的索引值,如果对应的索引处没有元素,直接存放,如果有对象在,那么比较它们的equals方法比较内容

    commons-lang

    2.ObjectUtils 主要是对null进行安全处理,可以设置为null时的默认返回值,比较相等时是调用对象的equals方法,因此需要对对象进行方法进行覆盖 3.SystemUtils 主要获取一些系统属性,例如工作目录等等 4.DateUtils/...

    学生集合排序

    将学生对象放入一个集合,通过重写学生类的hashcode与equals方法,以及通过collections工具类调用实现caparator接口类的专门比较器及方法,对存放学生的集合进行多属性排序

    java2022面试宝典

    在lawa中,每个对象都可以调用自己的hashCode)方法得到自己的哈希值(hashCode),相当于对象的指纹信息,通常来说世界上没有完全相同的两个指纹,但是在Java中做不到这么绝对,但是我们仍然可以利用hashCode来做一些...

    javaclass源码-JavaForger:使用模板基于现有类生成Java源代码

    JavaForger包括通用Java代码的默认模板,例如equals,hashCode,innerBuilders和针对它们的单元测试。 可以为特定于项目的重复代码创建自定义模板。 JavaForger能够直接将源代码插入现有的类中。 例子 假设我们有一...

    Java核心技术II(第8版)

    10.4.5 远程对象与equals、hashCode和clone方法 10.5 远程对象激活 10.6 Web Services与JAX-WS 10.6.1 使用JAX-WS 10.6.2 Web服务的客户端 10.6.3 Amazon的E-Commerce服务 第十一章 脚本、编译与注解处理 11.1 Java...

    写给大忙人看的JAVA SE 8

    9.3 实现equals、hashCode和compareTo方法 198 9.3.1 安全的Null值相等测试 198 9.3.2 计算哈希码 199 9.3.3 比较数值类型对象 200 9.4 安全需要 201 9.5 其他改动 204 9.5.1 将字符串转换为数字 204 9.5.2 全局...

    Java入门教程(微学苑)-part1

    最好的最简单的Java入门教程。 目录 1 Java概述 1 1.1 Java语言概述 1 1.2 Java虚拟机以及跨平台原理 2 1.3 关于JVM的执行效率 2 1.4 客户端市场的折戟 3 ...4.22 hashCode() 方法 80 4.23 toString() 方法 80

    jdk-8u202-linux-x64.tar

    hashMap数据结构的优化,原来的hashMap采用的数据结构是哈希表(数组+链表),hashMap默认大小是16,一个0-15索引的数组,如何往里面存储元素,首先调用元素的hashcode方法,计算出哈希码值,经过哈希算法算成数组的...

    javaSE代码实例

    14.6.3 equals与hashCode方法重写规定的作用 288 14.6.4 LinkedHashSet类的使用 291 14.6.5 SortedSet接口与TreeSet类 292 14.6.6 自定义满足Sorted集合的类 293 14.6.7 定制SortedSet的排序规则 296 14.6...

    jdk-8u112-windows-x64.zip

    方法,计算出哈希码值,经过哈希算法算成数组的索引值,如果对应的索引处没有元素,直接存放,如果有对象在,那么比较它们的equals方法比较内容 如果内容一样,后一个value会将前一个value的值覆盖,如果不一样,在...

Global site tag (gtag.js) - Google Analytics