为了能够在面试回答中优雅而不失体面回答面试考点,该文章借鉴了不同平台对知识点的描述。 回答 HashMap 是一种存取高效但不保证有序的常用容器。它的数据结构为“数组+链表”,是解决哈希冲突的产物,也就是我们常说的链地址法。它实现了Map 接口采用K-V 键值对存储数据,并实现了浅拷贝和序列化。 H ...
分类:
编程语言 时间:
2021-05-24 09:44:25
阅读次数:
0
散列表是普通数组概念的推广,由下标与值的映射提高为键值分别与下标的映射。 数组中查找元素需对下标遍历来查询值,复杂度通常是非常数。而散列表由键到下标是常数级,因此散列表是典型的空间换时间的数据结构。 由键到下标的映射有不同的方法,即哈希函数,可能会造成哈希冲突。 一、直接寻址表 当全域比较小时,关键 ...
分类:
其他好文 时间:
2021-01-27 13:14:21
阅读次数:
0
一、哈希表 1、概念 哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构。它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度。这个映射函数就做散列函数,存放记录的数组叫做散列表。 2、散列存储的基本思路 以数据中每个元素的关键字K ...
分类:
其他好文 时间:
2020-10-09 20:40:28
阅读次数:
22
一,HashTable哈希表,它相比于hashMap结构简单点,它没有涉及红黑树,直接使用链表的方式解决哈希冲突。我们看它的字段,和hashMap差不多,使用table存放元素privatetransientEntry<?,?>[]table;privatetransientintcount;privateintthreshold;privatefloatloadFactor;priv
分类:
其他好文 时间:
2020-07-30 01:14:52
阅读次数:
51
3.索引 1.索引的作用:提高数据查询效率 2.常见索引模型:哈希表、有序数组、搜索树 3.哈希表:键 - 值(key - value)。 4.哈希思路:把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置 5.哈希冲突的处理办法:链表 6.哈希表适用场景: ...
分类:
其他好文 时间:
2020-07-24 21:07:26
阅读次数:
68
字节跳动提前批 时间:2020-07-09 18:00-19:00 内容 项目 背景:基于ZooKeeper的配置中心 问题: 项目的背景 如何实现 分布式锁的实现 Java基础 问题: HasMap的数据结构 HashMap如何解决哈希冲突 算法 常见的排序算法有哪些 快排的时间复杂度,最差的时间 ...
分类:
其他好文 时间:
2020-07-09 22:35:20
阅读次数:
87
理论概念 HashMap基于哈希丟的Map接口实现,是以key-value存锗形式存在。它是线程不安全的,key值和value值允许为null。 JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的,哈希冲突是由于两个对象调 ...
分类:
其他好文 时间:
2020-07-06 16:38:02
阅读次数:
76
其实很简单: 1、大前提是选择哈希结果平均分布的哈希函数,这个有很多种方案,不是关键; 2、在存储哈希结果的时候, 2.1、如果当前地址没有被占用,则直接存放值; 2.2、如果当前地址已经被占用了: 2.2.1、如果当前地址存放的是一个值:则在该地址存放指针,该指针指向一个链表,同时需要将原来这个位 ...
分类:
其他好文 时间:
2020-06-11 13:34:22
阅读次数:
51
ThreadLocal 源码分析 * ThreadLocal的内存泄露问题,使用完后,执行remove操作 * 在开放定址算法中,线性探测法是散列解决冲突的一种方法,当hash一个关键字的时候,发现没有冲突, 就保存关键字,如果有冲突,就探测冲突地址的下一个地址,如此循环,知道有空地址为止,从而解决 ...
分类:
其他好文 时间:
2020-05-29 18:03:58
阅读次数:
60
所谓的哈希冲突就是指当两个不同的值对应同一个哈希映射时的处理。一共有三种方法。 一、拉链法 HashMap,HashSet其实都是采用的拉链法来解决哈希冲突的,就是在每个位桶实现的时候,我们采用链表(jdk1.8之后采用链表+红黑树)的数据结构来去存取发生哈希冲突的输入域的关键字(也就是被哈希函数映 ...
分类:
其他好文 时间:
2020-05-10 10:48:37
阅读次数:
105