![](https://img-blog.csdnimg.cn/20200210132222700.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java容器集合
。
不要停止思考-jcn
向往美好生活
展开
-
Java 阻塞队列--BlockingQueue
1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞队列提供了四种处理方法:...转载 2020-02-16 20:48:36 · 398 阅读 · 0 评论 -
集合类不安全问题及解决方案
一、List1、代码演示 1 2 3 4 5 6 7 8 9 10 11 12 13 publicclassArrayListNotSafeDemo { publicstaticvoidmain(String[] args) {...转载 2020-02-16 18:25:38 · 348 阅读 · 0 评论 -
LinkedList源码超详细解析【不看会后悔系列】
在阅读源码之前,首先对jdk1.8版本LinkedList进行简单概括:1.双向链表结构,真正的动态结构,不需要考虑固容问题。2.散失了随机访问能力。源码解析已传上github:https://github.com/NolanJcn/javautilexplain对LinkedList与ArrayList进行比较:LinkedList的继承结构:public class LinkedL...原创 2019-10-13 20:15:16 · 409 阅读 · 0 评论 -
Vector源码超详细解析【不看会后悔系列】
在对Vector(向量)做解析前,首先对Vector与ArrayList进行下对比:相同点:1.底层都是基于动态Object数组实现的2.相同的继承与实现3.初试默认长度都是10区别:1.Vector的实现是同步的/线程安全,ArrayList不同步/线程不安全。2.扩容机制——扩容大小不同,Vector增长为原来的1倍,ArrayList增长为原来的0.5倍。3.Vector有三...原创 2019-10-13 20:17:56 · 2381 阅读 · 0 评论 -
Collection&Map
前几篇文章介绍了ArrayList、LinkedList,GitHub上已经更新了部分父类接口以及抽象继承类的源码解析:点击这里下面来看看日常编程中比较熟悉的容器类底层的数据结构:CollectionAbstractCollectionListAbstractListArrayList :【动态数组】(非线程安全)LinkedList :【双向链表】(非线程安全)Vector:...原创 2019-10-13 20:16:08 · 175 阅读 · 0 评论 -
ArrayList源码超详细解析【不看会后悔系列】
一直在说ArrayList是非线程安全的,到底是为什么呢?以ArrayList的add()方法为例,添加操作并不是一步完成,而是分为两步:1.先在elementData[index]位置上添加一个新的元素2.接着在为size进行+1操作。描述:如果此添加过程是在多线程的环境下,例如线程1已经完成了第一步将元素添加进了elementData[]中,但是此时的size并没有进行+1操作,而现...原创 2019-10-13 20:14:09 · 423 阅读 · 0 评论 -
关于HashMap,90%的人都不知道的点!
提示:本篇文章为上篇文章的延续,需要理解上篇文章内容才能对本篇内容进行理解。前篇回顾: 上篇文章我们讲解了hash函数作用、hash值的计算、hash碰撞的解决。文章: 细粒度拆分HashMap<2>,吊打面试官!以及分析了为什么要用">>16",因为hash表是使用2的幂次方倍(也就是说HashMap数组长度取2的整数幂)进行掩码(也就是代码中的异或"^")的...原创 2019-12-17 18:29:16 · 368 阅读 · 0 评论 -
细粒度拆分HashMap<2>
对于上篇文章遗漏了一点:在进行<<、>>和>>>运算的时候需要考虑正负的情况<<:不分正负数,低位补0;“>>”:如果该数为正,则高位补0,若为负数,则高位补1;“>>>”:若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0在面试HashMap的时候,你是不是背面试答案还是真的有去研究分析源...原创 2019-12-16 18:46:53 · 260 阅读 · 0 评论 -
细粒度拆分HashMap<1>
之前有写过一篇文章,对HashMap进行源码解析:HashMap源码解析&&学习方法文章虽然很详细的分析HashMap的内部结构,但是篇幅太长,且以注释的方式进行展示,不利于读者阅读。所以这里将对HashMap进行细粒度的拆分整理,方便读者的理解。为了能让读者更加好的理解源码中的含义,为此列出源码中出现的一些关键字以及运算符进行讲解:准备:#HashMap中的关键...原创 2019-12-14 22:43:58 · 481 阅读 · 1 评论 -
史上最全的HashMap源码解析【不看会后悔系列】
在对HashMap源码进行解析之前,我们先来探讨下到底阅读源码应该采用个什么法?以我自身经验来讲:我阅读源码首先会分三步走:第一步:先对该对象做一个宏观的了解:了解这个类所涉及的相关知识,先了解这些知识,然后就对这个类做个大概的了解。以HashMap为例: 一、宏观了解: 1.HashMap不同步的,也就是非线程安全多线程下进行结构修改需要在外部进行同步操作,改变已经关联的键值不是...原创 2019-10-13 20:21:13 · 506 阅读 · 0 评论