
集合框架
武林是大腿
博客都是本人浏览的一些好的博文或者公众号进行的转载归纳,用于互相交流,共同学习。
文章末尾都备注有转载来源,如有侵权,联系删除。
展开
-
集合框架(13)-----ConcurrentHashMap源码解析(jdk1.8)
基于JDK1.8ConcurrentHashMap1. 原理解析1.1. 重要成员变量1.2. 实例初始化1.3. put操作1.3.1 put过程描述1.3.2 hash算法1.3.3 定位索引1.3.4 获取table对应的索引元素f1.4. table 扩容1.4.1 addCount1.4.2 treeify1.4.3 transfer1.5. ...转载 2020-04-15 15:49:18 · 182 阅读 · 0 评论 -
集合框架(12)-----ConcurrentHashMap
目录1. ConcurrentHashMap的实现——JDK7版本1.1 分段锁机制1.2 ConcurrentHashMap的数据结构1.3 ConcurrentHashMap的初始化1.3.1 初始化ConcurrentHashMap1.3.2 初始化Segment分段1.4 定位Segme...转载 2020-04-15 15:41:28 · 365 阅读 · 0 评论 -
java集合详解和集合面试题目
一、集合与数组数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。二、层次关系如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两...原创 2020-02-29 16:32:34 · 488 阅读 · 0 评论 -
集合框架(11)-----HashMap实现原理及源码分析
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。一、什么是哈希表在讨论哈希表之前,我们先大概...原创 2020-02-29 15:50:33 · 131 阅读 · 0 评论 -
集合框架(10)-----CopyOnWriteArrayList实现原理及源码分析
CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略,我们也可以称这种容器为"写时复制器",Java并发包中类似的容器还有CopyOnWriteSet。本文会对CopyOnWriteArrayList的实现原理及源码进行分析。实现原理我们都知道,集合框架中的...原创 2020-02-29 15:42:04 · 151 阅读 · 0 评论 -
Map之TreeMap介绍(九)
一.TreeMap的简介 TreeMap是一个有序的key-value集合,基于红黑树(Red-Black tree)的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序,具体取决于使用的构造方法。下面简单介绍一下 红黑树: 1. 根节点是黑色 2. 每个节点都只能是红色或者黑色 3. 每个叶节点(NIL节点,空节点)是黑色的。...转载 2018-05-31 20:58:28 · 183 阅读 · 0 评论 -
Map之HashMap介绍(八)
1.HashMap的简介 (JDK1.7.0_79版本) HashMap是基于哈希表的Map实现的的,一个Key对应一个Value,允许使用null键和null值,不保证映射的顺序,特别是它不保证该顺序恒久不变!也不是同步的。 怎么理解不保证恒久不变呢?当哈希表中的条目数超出了加载因子与当前容量的乘积时的时候,哈希表进行rehash操作(即重建内部数据结构),此时映射顺序可能会被打乱!...转载 2018-05-31 20:57:48 · 145 阅读 · 0 评论 -
Map介绍(七)
一.Map概述 0.前言 首先介绍Map集合,因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。 1:介绍Map是将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。2:类图关系3:讲解(1):AbstractMap是一...转载 2018-05-31 20:57:08 · 365 阅读 · 0 评论 -
List集合总结(六)
一.总结概述List继承了Collection,是有序的列表。实现类有ArrayList、LinkedList、Vector、Stack等 ArrayList是基于数组实现的,是一个数组队列。可以动态的增加容量!LinkedList是基于链表实现的,是一个双向循环列表。可以被当做堆栈使用!Vector是基于数组实现的,是一个矢量队列,是线程安全的!Stack是基于数组实现的,是栈,它继承与Vect...转载 2018-05-31 20:56:37 · 192 阅读 · 0 评论 -
List集合之Stack介绍(五)
1.Stack的简介Stack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。 因为它继承自Vector,那么它的实现原理是以数组实现堆栈的。如果要以链表方式实现堆栈可...转载 2018-05-31 20:55:42 · 1658 阅读 · 0 评论 -
List集合之Vector介绍(四)
1. Vector的简介 JDK1.7.0_79版本 Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。Vector 是同步的,可用于多线程。public class Vector<E> extends AbstractList...转载 2018-05-31 20:54:49 · 186 阅读 · 0 评论 -
List集合之LinkedList介绍(三)
1. LinkedList的简介 JDK1.7.0_79版本LinkedList是基于链表实现的,从源码可以看出是一个双向链表。除了当做链表使用外,它也可以被当作堆栈、队列或双端队列进行操作。不是线程安全的,继承AbstractSequentialList实现List、Deque、Cloneable、Serializable。public class LinkedList<E> ...转载 2018-05-31 20:53:58 · 154 阅读 · 0 评论 -
List集合之ArrayList介绍(二)
一:List概述List是 java.util包下面的类,从java集合系列——java集合概述(一)中可以知道,List继承了Collection 接口!List本身也是一个接口,它的实现有ArrayList 、LinkedList、Vector和CopyOnWriteArrayList等!下面总结分析ArrayList核心的概念和实现原理!二:List的几个实现类Array...原创 2018-05-31 20:52:38 · 897 阅读 · 0 评论 -
java集合概述(一)
在JDK中集合是很重要的,学习java那么一定要好好的去了解一下集合的源码以及一些集合实现的思想! 一:集合的UML类图(网上下载的图片)Java集合工具包位置是java.util.*二:集合工具的分析 1:Java集合是java提供的工具包,常用的数据结构:集合、链表、队列、栈、数组、映射等 2:java集合主要划分为五个部分:List列表、Set集合、Map映射、迭代器(Iterator、En...转载 2018-05-31 20:35:11 · 317 阅读 · 0 评论