概述类面试题 1. 请说一下Java容器集合的分类,各自的继承结构 Java集合分为两大类:Collection 和 Map Collection集合 Map集合 2. 请谈一谈Java集合中的fail-fast和fail-safe机制 fail-fast fail-fast也就是 “快速失败”,它 ...
分类:
编程语言 时间:
2021-03-08 13:09:40
阅读次数:
0
负载因子:元素个数>=桶个数*负载因子,则触发扩容。默认桶个数16,默认负载因子0.75。HashMap的容量是2的幂次可以把哈希取模的操作变成位运算以加快运算速度,当length是2的幂次时,a%length <=> a&(length-1) (比如101101%1000 <=>101101&11 ...
分类:
其他好文 时间:
2020-01-01 09:29:30
阅读次数:
77
java集合类有哪些 Hashmap中1.7和1.8主要区别 HashMap是我们开发中经常使用到的集合,jdk1.8相对于1.7底层实现发生了一些改变。1.8主要优化减少了Hash冲突 ,提高哈希表的存、取效率。 底层数据结构不一样,1.7是数组+链表,1.8则是数组+链表+红黑树结构(当链表长度 ...
分类:
其他好文 时间:
2019-10-04 18:42:22
阅读次数:
109
一.哈希表 哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。 链式哈希表从根本上说是由一组链表构成。每个链表都可以看做是一个“桶”,我们将所有的元素通过散列的方式放到具体的不同的桶中。插入元素时,首先将其键传入一个哈希函数(该 ...
分类:
其他好文 时间:
2019-03-03 18:52:00
阅读次数:
234
考虑到路径是有向的,不是很好维护。 如果路径无向的话,可以直接转化为链加和查询操作。 既然有向的话,不妨考虑一波hash。 对于一组询问x,y,可以把树划分为两颗子树。 合法显然需要满足 x子树的起点的hash=y子树的终点的hash x子树的终点的hash=y子树的起点的hash 直接用LCT维护 ...
分类:
其他好文 时间:
2019-02-07 09:31:27
阅读次数:
164
1、一个栏位(hashmap数组的一个位置),放置的node有这几种可能:A null;B 链表的头节点,这是的hash值和后继节点的hash值是一样的,而且和数组位置也是一一对应的,是个正数;C transfer中,会把hash值为-1的一个firstNode放在这里,标志这个位置正在被trans ...
分类:
其他好文 时间:
2018-08-17 12:10:43
阅读次数:
132
关于HashMap的扩容过程,请参考源码或百度。 我想记录的是1.8 HashMap扩容是对链表中节点的Hash计算分析. 对术语先明确一下: hash计算指的确定节点在table[index]中的链表位置index,不是节点的hash值。 那么问题来了 , 怎么就确定 扩容前的 链表节点 在 扩容 ...
分类:
其他好文 时间:
2018-07-05 23:39:48
阅读次数:
248
在大型web应用中,缓存可算是当今的一个标准开发配置了。在大规模的缓存应用中,应运而生了分布式缓存系统。分布式缓存系统的基本原理,大家也有所耳闻。key-value如何均匀的分散到集群中?说到此,最常规的方式莫过于hash取模的方式。比如集群中可用机器适量为N,那么key值为K的的数据请求很简单的应... ...
分类:
编程语言 时间:
2017-08-05 15:32:20
阅读次数:
180
背景: 一致性Hash用于分布式缓存系统,将Key值映射到详细机器Ip上,而且添加和删除1台机器的数据移动量较小,对现网影响较小 实现: 1 Hash环:将节点的Hash值映射到一个Hash环中。每一个Key顺时针第一个找到的节点。就是这个Key被路由到的机器 2 "虚拟节点":将节点虚拟成多个"虚 ...
分类:
其他好文 时间:
2017-07-18 22:08:52
阅读次数:
120
HashMap是我们用得非常频繁的一个集合,但是由于它是非线程安全的,在多线程环境下,put操作是有可能产生死循环的,导致CPU利用率接近100%。为了解决该问题,提供了Hashtable和Collections.synchronizedMap(hashMap)两种解决方案,但是这两种方案都是对读写 ...
分类:
编程语言 时间:
2017-06-22 09:57:29
阅读次数:
218