集合源码分析
文章平均质量分 90
小猪快跑22
专注于Java以及Android
展开
-
全网最易懂的Map之三---LinkedHashMap 源码解析
前言: 这篇文章的内容包括 LinkedHashMap 的常用api 的源码解析以及利用 LinkedHashMap来实现LRUCache算法。看此文章前最好看看我之前写的2片HashMap源码分析的文章; HashMap源码分析一 HashMap源码分析二 说明: LinkedHashMap 是一个双向的链表,包含了指向链表头、尾的指针:head 和 tail,正是由于这个特性,所以LinkedHashMap 是有序的,而HashMap是无序的。 LinkedHashMap 存储的Entey对象和原创 2020-08-04 17:04:54 · 568 阅读 · 3 评论 -
Java集合为什么不能在foreach中add/remove元素--全网最详细版
先来看一个例子: public class TestFastFail { public static void main(String[] args) { testListRemove(); } private static void testListRemove() { List<String> list = new Arra...原创 2020-05-08 16:32:34 · 502 阅读 · 0 评论 -
LinkedHashMap源码解析
前言:之前分析了HashMap的源码,LinkedHashMap 是 HashMap 的子类。LinkedHashMap 自身维护着一个双向的循环链表,这个链表定义了迭代排序,通常是插入顺序。 LinkHashMap 的结构如下,比HashMap多了双链表: 一、LinkedHashMap 和 HashMap的异同 LinkedHashMap 和 HashMap 最大的一个不同之处原创 2018-01-22 10:10:56 · 423 阅读 · 0 评论 -
HashMap源码解析二
上篇文章由于篇幅有限,只讲了put方法以及扩容resize()方法。下面接着讲get以及remove方法。上文的链接:http://blog.csdn.net/zhujiangtaotaise/article/details/79046604 我们还是用上次的数据,即有3个数据,3个数据的key分别为 m,n,t,对应的hash值分别为5,6,9。如下图: 一 、get方法 :原创 2018-01-17 15:26:32 · 416 阅读 · 0 评论 -
全网最易懂的HashMap源码解析之一
前言:HashMap的用法是相当的广泛,之前就是用get和put,根本不了解其原理,现在随着工作的需要是必须要了解其原理的。我这里的源码是基于java8来分析的。 java8中的HashMap的结构是有数组、单链表以及红黑树组成的,如果链表的节点个数大于8则分裂为红黑树,如下图: 图片是copy过来的。 HashMap的主要属性如下: //默认的容量,即默认的数组长度 16 sta原创 2018-01-12 17:38:48 · 805 阅读 · 1 评论