仅做个人记录使用 ###1、一个object对象有对应的hashCode值,重写了toString方法如何知道hashCode值? object原生的toString()方法:返回单前对象的类名及hash值。相当于getClass().getName() + '@' + Integer.toHexS ...
分类:
编程语言 时间:
2020-06-23 21:25:18
阅读次数:
46
前言 相信你面试的时候,肯定被问过 hashCode 和 equals 相关的问题 。如: hashCode 是什么?它是怎么得来的?有什么用? 经典题,equals 和 == 有什么区别? 为什么要重写 equals 和 hashCode ? 重写了 equals ,就必须要重写 hashCode ...
分类:
其他好文 时间:
2020-06-23 20:57:27
阅读次数:
32
Set的简介 Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,主要有HashSet和TreeSet两大实现类。 在判断重复元素的时候,Set集合会调用hashCode()和equal()方法来实现。 HashSet是哈希表结构,主要利用HashMap的key来存储元素 ...
分类:
编程语言 时间:
2020-06-21 13:30:55
阅读次数:
58
hashCode()方法和equals()方法的作用其实是一样的,在Java里都是用来对比两个对象是否相等一致。 那么equals()既然已经能实现对比的功能了,为什么还要hashCode()呢?因为重写的equals()里一般比较的比较全面比较复杂,这样效率就比较低,而利用hashCode()进行 ...
分类:
其他好文 时间:
2020-06-20 18:39:14
阅读次数:
44
1.两个对象的hashCode()相同,equals()不一定为true (1)重写equals()的同时,重写hashCode() a.定义Person类,私有属性name,age;有参构造,set/get方法; b.重写equals()、hashCode()方法 c.测试: d.运行结果: 结论 ...
分类:
编程语言 时间:
2020-06-19 22:32:55
阅读次数:
57
hashmap的数据结构 hashmap的结构,是一个数组,每个数组元素是一个链表,数组和链表的结合体。 如下图所示: hashmap中的put方法逻辑 先根据key的hashcode计算出hash值,然后根据hash值得到这个元素在数组中的位置, 如果这个位置为空,直接插入元素;如果不为空,和eq ...
分类:
编程语言 时间:
2020-06-19 12:30:26
阅读次数:
64
摘要 HashMap的原理也是大厂面试中经常会涉及的问题,同时也是工作中常用到的Java容器,本文主要通过对以下问题进行分析讲解,来帮助大家理解HashMap的原理。 1.HashMap添加一个键值对的过程是怎么样的? 2.为什么说HashMap不是线程安全的? 3.为什么要一起重写hashCode ...
分类:
其他好文 时间:
2020-06-17 10:41:30
阅读次数:
35
带着BAT大厂的面试问题去理解SynchronizedSynchronized可以作用在哪里?分别通过对象锁和类锁进行举例。 Synchronized本质上是通过什么保证线程安全的?分三个方面回答:加锁和释放锁的原理,可重入原理,保证可见性原理。 Synchronized由什么样的缺陷? Java ... ...
分类:
其他好文 时间:
2020-06-12 01:15:46
阅读次数:
90
集合常见面试题 集合和数组的区别: 1:数组是固定长度的;集合可变长度的。 2:数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。 3:数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。 1.ArrayList和LinkedList的区别 ArrayLi ...
分类:
其他好文 时间:
2020-06-10 19:29:46
阅读次数:
57
数组和链表组合构成 hash code 相等的value存入链表 size/capacity >0.75 时 会扩容,长度是原数组的2倍 Hash的公式 > index = HashCode(Key) & (Length - 1) 扩容后,原来的数组成员会根据公式重新分配index. JAVA8之前 ...
分类:
其他好文 时间:
2020-06-08 10:57:16
阅读次数:
65