
Map家族
光影和弦 一抹春色
这个作者很懒,什么都没留下…
展开
-
Hash冲突解决策略
哈希是一种通过对数据进行压缩, 从而提高效率的一种解决方法,但由于哈希函数有限,数据增大等缘故,哈希冲突成为数据有效压缩的一个难题。本文主要介绍哈希冲突、解决方案,以及各种哈希冲突的解决策略上的优缺点。一、哈希表概述哈希表的哈希函数输入一个键,并向返回一个哈希表的索引。可能的键的集合很大,但是哈希函数值的集合只是表的大小。哈希函数的其他用途包括密码系统、消息摘要系统、数字签名系统,为了使这些应用程序按预期工作,冲突的概率必须非常低,因此需要一个具有非常大的可能值集合的散列函数。密码系统:给定用户密码原创 2020-05-18 09:01:02 · 285 阅读 · 0 评论 -
吃透JAVA集合框架(超级详细)(综述)
一 集合框架图简化图一:简化图二:说明:对于以上的框架图有如下几点说明1、所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。2、集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。3、抽象类:5个抽象类(长虚线...原创 2020-04-27 13:23:11 · 340 阅读 · 0 评论 -
Map 家族之HashMap源码分析(超级详细 内含红黑树详解)(一)
一HashMap的概述1.1类的继承结构*Cloneable 空接口,表示可以克隆Serializable 序列化AbstractMap提供Map实现接口HashMap是基于哈希表的Map接口的非同步实现。是以key-value存储形式存在。(除了不同步与允许使用null之外,HashMap和HashTable大致相同)HashMap的实现不是同步的,这意味着它不是线程安全的。它的...原创 2020-03-19 16:32:13 · 431 阅读 · 0 评论 -
Map系列之LinkedHashMap
LinkedHashMap继承HashMap并实现了Map接口,同时具有可预测的迭代顺序(按照插入顺序排序)。它与HashMap的不同之处在于,维护了一条贯穿其全部Entry的双向链表(因为额外维护了链表的关系,性能上要略差于HashMap,不过集合视图的遍历时间与元素数量成正比,而HashMap是与buckets数组的长度成正比的),可以认为它是散列表与链表的结合。/**The head ...原创 2020-04-23 23:47:50 · 288 阅读 · 0 评论 -
Map系列之ConcurrentHashMap(JAVA8)
一 ConcurrentHashMap 1.8Java8 Node 数组 + 链表 / 红黑树。当冲突链表达到一定长度时,链表会转换成红黑树。2. 初始化 initTable/**Initializes table, using the size recorded in sizeCtl.*/private final Node<K,V>[] initTable() {...原创 2020-04-24 09:31:10 · 508 阅读 · 0 评论 -
Map系列之AbstractMap
AbstractMapAbstractMap是一个抽象类,它是Map接口的一个骨架实现,最小化实现了此接口提供的抽象函数。在Java的Collection框架中基本都遵循了这一规定,骨架实现在接口与实现类之间构建了一层抽象,其目的是为了复用一些比较通用的函数以及方便扩展,例如List接口拥有骨架实现AbstractList、Set接口拥有骨架实现AbstractSet等。下面我们按照不同的操作...原创 2020-04-23 23:53:19 · 291 阅读 · 0 评论