Java中集合(Collection):一类是List另外一类是Set;

      区别:list中元素有序,可重复

         Set元素无序,不能重复

如何保证元素不重复呢?Object.Equals

但是当添加的元素到后面会非常多,每添加一个元素就增加一个,就会检查一次,比如添加10001个元素时候,就会检查1000次;这样是非常影响性能的;

于是,出现了哈希表,哈希算法(散列算法):将数据按照某种算法,直接指定到一个地址上;

暂时可以这样理解:hashcode返回的是存储对象的物理地址(也有可能不是)

当需要添加新的元素时,调用这个元素的hashcode方法,直接定位到它应该存放的物理地址,如果这个位置没有元素,就插入数据,不再进行任何比较;如果这个位置有元素,就会调用Equals方法,与新元素比较,如果相同,就不存入。

如果不同,就散列其他位置,其实就是一个解决冲突的问题,这样调用equals的次数就大大减少了。

1、如果两个对象相同,那么它们的hashCode值一定要相同;

2、如果两个对象的hashCode相同,它们并不一定相同

PS:对象相同说的是Equals比较,Equals只能比较引用类型

equals(Object obj)方法用来判断两个对象是否“相同”,如果“相同”则返回true,否则返回false。 
hashcode()方法返回一个int数,在Object类中的默认实现是“将该对象的内部地址转换成一个整数返回”

其中Equals和=区别:

Equals可以比较引用类型,==既可以比较引用类型,也可以比较值类型;

Equals 检查两个对象是否相等,对象的内容是否相等;==比较引用类型和基本类型时具有不同的够了能:

比较值类型时候,检查数值是否相等,等返回True,否则False

引用类型   如果引用指向同一对象(地址),返回True

hashcode和equals的更多相关文章

  1. 对hashcode、equals的理解

    1.首先hashcode和equals都是java每个对象都存在的方法,因为他们两是Object的方法. 2.hashcode方法默认返回的是该对象内存地址的哈希码,然而你会发现,Object类中没有 ...

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

    今天下午研究了半天hashcode()和equals()方法,终于有了一点点的明白,写下来与大家分享(zhaoxudong 2008.10.23晚21.36). 1. 首先equals()和hashc ...

  3. Java hashCode() 和 equals()的若干问题

    原文:http://www.cnblogs.com/skywang12345/p/3324958.html 本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() ...

  4. java中的hashcode()和equals()

    equals()和hashcode()都继承自object类. equals() equals()方法在object类中定义如下: public boolean equals(Object obj) ...

  5. Java hashCode() 和 equals()的若干问题解答

    本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() 与 == 的区别是什么? 3 hashCode() 的作用是什么? 4 hashCode() 和 equa ...

  6. 【Java】Map杂谈,hashcode()、equals()、HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap

    参考的优秀文章: <Java编程思想>第四版 <Effective Java>第二版 Map接口是映射表的结构,维护键对象与值对象的对应关系,称键值对. > hashco ...

  7. 【Java】hashcode()和equals()

    大家知道,在集合中判断集合中的两个元素是否相同,依赖的是hashcode()和equals()两个方法. > 一个简单的实验 public class Teacher { private Int ...

  8. 用HashSet的add方法谈hashcode和equals方法重写

    本文主要通过用HashSet的add方法讲一下hashCode和equals方法重写.错误的地方望指正. 1.了解HashSet的add方法 了解一个方法的好办法是看源码,所以先看源码 private ...

  9. Maintainable HashCode and Equals Using Apache Commons

    Java hashCode and equals methods can be tricky to implement correctly. Fortunately, all majors IDEs ...

  10. Java中hashcode,equals和==

    hashcode方法返回该对象的哈希码值. hashCode()方法可以用来来提高Map里面的搜索效率的,Map会根据不同的hashCode()来放在不同的位置,Map在搜索一个对象的时候先通过has ...

随机推荐

  1. 关于highcharts-ng

    1.内容都正确但是不显示,使用parseInt()方法转换

  2. Django——auth用户认证

    之前我们在进行用户校验的时候,总是从数据库中获取数据,然后再进行对比,就像如下这样: def login(request): if request.method == "POST" ...

  3. Java中byte转换int时与0xff进行与运算的原因

    http://w.baike.com/LGAdcWgJBBQxRAHUf.html 转帖 java中byte转换int时为何与0xff进行与运算 在剖析该问题前请看如下代码 public static ...

  4. 图片加载Picasso

    https://github.com/square/picasso 基本用法 // 基本用法 // 普通加载图片 Picasso.with(PicassoActivity.this) .load(&q ...

  5. UVALive - 6257 K - Chemist's vows 【DFS】【BFS】【DP】

    题目链接 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...

  6. HDU - 1728 逃离迷宫 【BFS】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1728 思路 BFS 一开始 从开始位置 往四周走 如果能走的话 这个时候 转弯次数都是0 我们的标记不 ...

  7. vmware虚拟机安装MAC OSX10.10Yosemite简要记录

    vmware所在环境为win7 64位系统,intel4核CPU,16G内存. 本人安装的是OSX10.10Yosemite的CDR镜像. 1. 在服务中停止所有vmware服务. 2. 安装unlo ...

  8. CSS3响应式侧边菜单

    在线演示 本地下载

  9. 剑指offer之 整数中1出现的次数

    public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int count=0; for(int i=1; ...

  10. PHP基础陷阱题(变量赋值)

    PHP基础陷阱题代码,需要的朋友可以参考下   复制代码 代码如下: <?php $a=3; $b=6; if($a=5||$b=7){ $a++; $b++; } var_dump($a, $ ...