Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这两个方法,今天就来介绍一些这两个方法的作用。 equals()和hashCode()方法是用来在同一类中做比较用的,尤其是在容器里如set存放同一类对象时用来 ...
分类:
其他好文 时间:
2016-07-04 22:15:07
阅读次数:
156
HashSet 是继承Set接口,Set又实现Collection接口。 在Java编程中,如何判断java集合中两个对象是否相等呢?大致分为两步: 1.首先判断两个对象的hashcode是否相等 如果不相等,则两个对象不相等; 如果相等,则进行下一步,进行2 2.使用equals()方法判断两个对 ...
分类:
编程语言 时间:
2016-07-04 11:56:32
阅读次数:
130
概述
从本文你可以学习到:什么时候会使用HashMap?他有什么特点?
你知道HashMap的工作原理吗?
你知道get和put的原理吗?equals()和hashCode()的都有什么作用?
你知道hash的实现吗?为什么要这样实现?
如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办?当我们执行下面的操作时:HashMap...
分类:
编程语言 时间:
2016-07-03 19:26:52
阅读次数:
241
hashMap用了一个名字为table的数组;还有若干个名字为entry的链表。看hashMap是如何应用这些数据结构的。用插 入<key,value>举例:hashMap首先会通过key得到其hashCode,具体的hash函数就不说了(因为没多大意义);然 后把key的hashCode%tabl ...
分类:
其他好文 时间:
2016-07-03 15:43:53
阅读次数:
180
下面先看一段简单的demo 没有加上注释的demo时,输出的两个hashCode是相同的值,加上注释后的demo后,输出的两个hashCode的值是不同,有没有想过为什么?只不过是Date类重写了equals方法和生成hashCode的方法而已,在Date类的源码中生成hashCode的方法如下 D ...
分类:
编程语言 时间:
2016-07-03 15:34:13
阅读次数:
167
前言 在程序设计中,有很多的“公约”,遵守约定去实现你的代码,会让你避开很多坑,这些公约是前人总结出来的设计规范。 Object类是Java中的万类之祖,其中,equals和hashCode是2个非常重要的方法。 这2个方法总是被人放在一起讨论。最近在看集合框架,为了打基础,就决定把一些细枝末节清理 ...
分类:
其他好文 时间:
2016-07-01 22:46:05
阅读次数:
233
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法: 1 public native int hashCode(); 1 public native int hashCode(); 1 public native int ...
分类:
编程语言 时间:
2016-07-01 13:31:54
阅读次数:
264
首先来看一下String中hashCode方法的实现源码 在String类中有个私有实例字段hash表示该串的哈希值,在第一次调用hashCode方法时,字符串的哈希值被计算并且赋值给hash字段,之后再调用hashCode方法便可以直接取hash字段返回。 String类中的hashCode计算方 ...
分类:
编程语言 时间:
2016-06-29 13:02:19
阅读次数:
137
HashSet不能添加重复的元素,当调用add(Object)方法时候,首先会调用Object的hashCode方法判hashCode是否已经存在,如不存在则直接插入元素;如果已存在则调用Object对象的equals方法判断是否返回true, 如果为true则说明元素已经存在,如为false则插入 ...
分类:
其他好文 时间:
2016-06-26 16:32:36
阅读次数:
141
版权声明:本文为博主原创文章,未经博主允许不得转载。 List特点:元素有放入顺序,元素可重复 Map特点:元素按键值对存储,无放入顺序 Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的) 新建一个实体 ...
分类:
编程语言 时间:
2016-06-25 21:42:13
阅读次数:
285