排序
HashMap的jdk1.7和jdk1.8有什么区别
JDK1.8之前采用的是拉链法:将链表和数组相结合。 也就是说创建一个链表数组,数组中每一格就是一个链表。若遇到哈希冲突,则将冲突的值加到链表中即可。 jdk1.8在解决哈希冲突时有了较大的变化...
Hash数据结构的底层实现原理
在Redis中,Hash数据结构的底层实现采用了一种称为哈希表(hash table)的数据结构。 具体来说,Redis中的哈希表是一个数组,数组的每个元素都是一个链表的头指针,而链表的节点包含了哈希表中...
哈希冲突解决方法
分离链接法(Separate Chaining) 在每个哈希表的槽(桶)中维护一个链表、向量或其他数据结构,以存储多个键-值对。 当哈希冲突发生时,新的键-值对被添加到槽中的链表中。这种方法不会影响哈...
b树与b+树的区别
数据存储方式 B树:B树的每个节点既存储数据也存储索引。这意味着B树的非叶子节点既包含索引键也包含对应的数据。 B+树:B+树的非叶子节点仅存储索引键,而数据全部存储在叶子节点。B+树的所有...
数组和链表区别
存储方式: 数组:数组是一种连续的存储结构,元素在内存中按照线性顺序排列。这使得数组支持随机访问,可以通过索引快速访问任何元素。 链表:链表是一种非连续的存储结构,元素以节点的形式存...
HashMap是如何解决Hash碰撞的问题的?
首先要知道什么是Hash碰撞,通俗的讲就是当两个key运算出来的hash值与数组长度n-1进行与运算之后发现定位出来的位置是一样的。 这就是Hash碰撞、Hash冲突。 HashMap是通过在两个key计算出的同一...
LRU算法和LFU算法有什么区别,redis分别是如何实现的?
什么是LRU算法? LRU 全称是 Least Recently Used 翻译为最近最少使用,会选择淘汰最近最少使用的数据。 传统 LRU 算法的实现是基于「链表」结构,链表中的元素按照操作顺序从前往后排列,...