随笔分类 -  JDK源码解析

摘要:LinkedHashMap继承了HashMap,他在HashMap的基础上增加了一个双向链表的结构,链表默认维持key插入的顺序,重复的key值插入不会改变顺序,适用于使用者需要返回一个顺序相同的map对象的情况。还可以生成access-order顺序的版本,按照最近访问顺序来存储,刚被访问的结点处 阅读全文
posted @ 2018-08-16 00:06 GrayWind 阅读(880) 评论(0) 推荐(1)
摘要:老生常谈的问题——Hashtable和HashMap有什么区别 大家一般都能说出几条,比如Hashtable是线程安全的,不支持null作为key和value值等等。那么,要仔细了解这个问题还是直接从Hashtable的源码入手。 先列一下我找到的区别: 首先从最上方的注释中可以看到Hashtabl 阅读全文
posted @ 2018-08-14 23:12 GrayWind 阅读(338) 评论(0) 推荐(0)
摘要:由于TreeNode本身是红黑树的实现,所以在分析TreeNode的之前我还是摸了一篇算法导论里红黑树的读书笔记:算法导论——红黑树,从伪代码行数也可以看出完整的红黑树的插入和删除操作代码是很长的,下面源码分析部分的行数就更多了,所以所谓手写红黑树画个图分析下逻辑还行,手写代码估计要写死(滑稽) T 阅读全文
posted @ 2018-08-13 23:49 GrayWind 阅读(6159) 评论(1) 推荐(0)
摘要:作为重要的常用集合,HashMap主要是提供键值对的存取,通过key值可以快速找到对应的value值。Hash表是通过提前设定好的规则计算一个元素的hash值来找到他在数组中的存储位置进行快速定位,假设有一个大小为10的数组,可以设定简单的计算规则为元素转为int后mod 10,由此元素的hash值 阅读全文
posted @ 2018-08-11 20:34 GrayWind 阅读(1317) 评论(0) 推荐(1)
摘要:LinkedList底层为双向链表同样继承了AbstractSequentialList<E>,跟ArrayList的数组相比读取效率低,不支持随机读取,碎片化空间利用率高,平均随机插入效率相对高。同时可以用来实现queue。属性有: transient int size = 0;list大小 tr 阅读全文
posted @ 2018-08-07 09:23 GrayWind 阅读(159) 评论(0) 推荐(0)
摘要:ArrayList是最常用的集合类,底层是由数组实现的 首先可以看到,有两个static final对象数组,也就是被线程间共享的,EMPTY_ELEMENTDATA是非default大小的空集合,原因是要辨别第一次添加元素时应该扩展的大小。 private static final Object[ 阅读全文
posted @ 2018-08-05 10:12 GrayWind 阅读(191) 评论(0) 推荐(0)
摘要:String直接继承Object 含有一个char[] value,还有一个int hash默认值为0 new String()的构造产生的是一个值为””的字符数组 String(char value[], int offset, int count)当count=0且offset<=value.l 阅读全文
posted @ 2018-08-01 12:54 GrayWind 阅读(2193) 评论(0) 推荐(0)