![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java集合
我不是攻城狮
越努力越幸运
展开
-
LinkedBlockingQueue
基于等待通知模型的的队列,先入先出,既有有界和无界。入队和出队各自拥有自己的可重入的锁。LinkedBlockingQueue结合线程池使用实现并行业务任务。原创 2020-03-07 00:04:24 · 269 阅读 · 0 评论 -
ArrayBlockingQueue
使用提示:ArrayBlockingQueue结合线程池一起使用实现并行业务处理的需求非常高效,ArrayBlockingQueue#take取出的对象用作null表示等待处理。(FIFO)的原则,它是一个基于。基础数据结构Object[]原创 2020-03-06 23:07:22 · 294 阅读 · 2 评论 -
HashMap原理分析
红黑树退化链表可以适当的放弃哈希冲突空间占优的优势,转而通过降低红黑树旋转的次数提升性能。红黑树为6时退化成链表,首先自旋的次数更少,只不过哈希冲突概率稍高一点,为什么不更低,红黑树为6和链表的性能接近了,但是增删改更有优势。这意味着涉及扩容或者缩容的概率低下,空间可以得到更好的利用。数组元素存储着一个个桶,当发生哈希冲突时候,则转化为链表进行储存,如果链表节点个数超过8,则转化为红黑树进行存储,如果红黑树节点个数小于6,退化为链表。两者结合:链表8的时候转,是空间和时间上的权衡的出的最优结果了。原创 2020-03-04 04:13:12 · 372 阅读 · 1 评论 -
ArrayList原理
一个对象拷贝另一个对象的过程中,创建了新的对象(在内存中开辟了一个空间,拥有一个新的对象地址),并且将原来的对象里的内容重新复制到新的对象上。浅拷贝:一个对象拷贝另一个对象的过程中,创建了新的对象,这个新的对象指向原来的对象,它的对象地址没有发生改变。基础数据结构是一个动态扩容的数组,当前容量达到阈值时,动态扩容数组,新的容量是原来容量的1.5倍。索引到某个需要删除的元素,如果需要缩容,完成缩容,重新拷贝删除后的所有元素至缩容之后的数组里面去。发生在扩容或者缩容过程,新的数组拷贝到扩容或者缩容的数组里面。原创 2020-03-03 14:00:44 · 2143 阅读 · 5 评论 -
LinkedList集合源码
通过索引移除元素:移除元素会有一个查找元素的过程,当前索引位置小于链表长度1/2时候,从首节点开始往后面扫描。移除元素(移除指定的对象):直接遍历链表所有节点,不会有优化查找节点的过程的。当前索引位置大于链表长度的1/2时候,从尾节点往前面扫描。LinkedList:本质是一个双向链表。原创 2020-03-03 13:29:48 · 395 阅读 · 0 评论