`
qepipnu
  • 浏览: 74599 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java hascode

阅读更多
java hascode


Java中有两类集合(Collection),一类是List,一类是Set,前者是有序的,元素可以重复,后者是无序的,元素不可以重复

那么在set类型的集合中,如何判断元素是否重复呢,这就需要使用Object.equals方法,但如果元素很多了,添加一个新元素时,比较的次数

就很多,例如已经有100个元素了,添加第101个元素时,就要和前面的元素比较100次,效率很低。


JAVA中采用哈希表的原理,哈希是个人名,它提出了哈希算法的概念,哈希算法也称为散列算法,是将数据依据酸法直接指定到一个地址上,

hascode实际上是返回的对象存储的物理地址

当存储一个新元素时,先调用元素的hascode的方法,就一下指定到了它应该存放的物理地址上,如果这个地址上没有元素,就直接存储了,如

果有元素,会调用equals方法进行比较,如果相等的就不存了,不相等的话就保存到另外一个物理地址上

如果两个对象相等,则hascode一定相等

如果hascode想等,并不表示两个对象相等

分享到:
评论

相关推荐

    java集合知识-map、set等

    import java.util.LinkedHashSet; public class HashSetTest { public static void main(String[] args) { HashSet hs = new LinkedHashSet(); hs.add("hahah"); hs.add("hehe"); hs.add("heihei"); hs....

    详解Java中用于查找对象哈希码值的hashCode()函数

    Java中入HashMap等一些键值对应的结构,基本上都可以用hashCode()来查找值,接下来我们就来详解Java中用于查找对象哈希码值的hashCode()函数:

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

    更清楚的了解hashcode()和equals()方法。

    Java中典型的内存泄露问题和解决方法

    主要介绍了Java中典型的内存泄露问题和解决方法,典型的内存泄露例子是一个没有实现hasCode和equals方法的Key类在HashMap中保存的情况,可以通过实现Key类的equals和hasCode方法解决这种内存泄漏问题,需要的朋友可以...

    Hibernate注解映射联合主键

    第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并...

    Java回顾(六)Set集合

    1、Set集合 1.1、Object中的hashCode值 默认情况下,不同对象的hashCode值是不相同的,除非之前已经把hashCode值重写了。 不同的英文单词的hashCode值是不... //hasCode返回值是int类型 System.out.println("hello".ha

    CursoJava:NélioAlves的Udemy课程

    课程在Java课程中学习的内容老师:Nelio Alves平台:Udemy 涵盖的内容: Java语言简介; 顺序结构; 条件结构:if-else,开关盒; 重复结构; 运算符:算术,逻辑,三进制,递增,递减,赋值和按位; 面向对象编程的...

    lombok-1.16.16源码和文档

      默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。 @ToString   生成toString方法,默认情况下,会输出类名、所有属性,属性会...

    glassfish-continuous-deployment-tutorial

    我正在通过 Micha Kops 教程学习使用 arquillian 和 jenkins。 访问: hasCode.com

Global site tag (gtag.js) - Google Analytics