摘要: LinkedHashMap继承了HashMap,他在HashMap的基础上增加了一个双向链表的结构,链表默认维持key插入的顺序,重复的key值插入不会改变顺序,适用于使用者需要返回一个顺序相同的map对象的情况。还可以生成access-order顺序的版本,按照最近访问顺序来存储,刚被访问的结点处 阅读全文
posted @ 2018-08-16 00:06 GrayWind 阅读(869) 评论(0) 推荐(1) 编辑
摘要: 老生常谈的问题——Hashtable和HashMap有什么区别 大家一般都能说出几条,比如Hashtable是线程安全的,不支持null作为key和value值等等。那么,要仔细了解这个问题还是直接从Hashtable的源码入手。 先列一下我找到的区别: 首先从最上方的注释中可以看到Hashtabl 阅读全文
posted @ 2018-08-14 23:12 GrayWind 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 由于TreeNode本身是红黑树的实现,所以在分析TreeNode的之前我还是摸了一篇算法导论里红黑树的读书笔记:算法导论——红黑树,从伪代码行数也可以看出完整的红黑树的插入和删除操作代码是很长的,下面源码分析部分的行数就更多了,所以所谓手写红黑树画个图分析下逻辑还行,手写代码估计要写死(滑稽) T 阅读全文
posted @ 2018-08-13 23:49 GrayWind 阅读(6111) 评论(1) 推荐(0) 编辑
摘要: 红黑树是一棵二叉搜索树,每个结点上增加了一个属性来存储颜色是红色还是黑色,红黑树可以确保没有一条路径会比其他路径长出2倍,所以近似可以认为是平衡的。 每个结点包含5个属性:color, key, left, right, p。如果一个结点没有子结点或者父结点,则该结点的相应指针属性为NIL,这些NI 阅读全文
posted @ 2018-08-13 16:19 GrayWind 阅读(1390) 评论(0) 推荐(0) 编辑
摘要: 单源最短路径问题是指,给定一个图G=(V,E),希望找到从给定源结点s到每个节点v的最短路径。单源最短路径问题可以用来解决很多最短路径的变体。 单目的地最短路径问题:找到从每个结点v到给定目的地结点t的最短路径。将图的每条边翻转,这个问题可以转换为单源最短路径问题。 单结点对最短路径问题:找到从给定 阅读全文
posted @ 2018-08-12 14:29 GrayWind 阅读(1221) 评论(0) 推荐(0) 编辑
摘要: 作为重要的常用集合,HashMap主要是提供键值对的存取,通过key值可以快速找到对应的value值。Hash表是通过提前设定好的规则计算一个元素的hash值来找到他在数组中的存储位置进行快速定位,假设有一个大小为10的数组,可以设定简单的计算规则为元素转为int后mod 10,由此元素的hash值 阅读全文
posted @ 2018-08-11 20:34 GrayWind 阅读(1293) 评论(0) 推荐(1) 编辑
摘要: 对于一个连通图来说,我们可以去掉其中一些边依然保持其连通的性质,在这些图中存在一个或多个图,他们的路径总和是最小的,这样的图必然是树。因为,如果说图中存在环,则去掉环的一条边依然可以保证连通性,这与总路径和最小是矛盾的。这样的图被称为最下生成树。城市间铺设电路就可以利用最小生成树来进行规划。 如图所 阅读全文
posted @ 2018-08-07 18:11 GrayWind 阅读(593) 评论(0) 推荐(0) 编辑
摘要: LinkedList底层为双向链表同样继承了AbstractSequentialList<E>,跟ArrayList的数组相比读取效率低,不支持随机读取,碎片化空间利用率高,平均随机插入效率相对高。同时可以用来实现queue。属性有: transient int size = 0;list大小 tr 阅读全文
posted @ 2018-08-07 09:23 GrayWind 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 对于图G=(V,E),V代表点,E代表边。图有两种标准的表示方法:邻接矩阵法和邻接链表法。 邻接链表法适合表示边的条数少的稀疏图,可以节约存储空间。对于有向图G来说,边(u,v)一定会出现在链表Adj[u]中,因此,所有链表的长度之和一定等于|E|。对于无向图来说,边(u,v)会同时出现在Adj[u 阅读全文
posted @ 2018-08-06 15:54 GrayWind 阅读(638) 评论(0) 推荐(0) 编辑
摘要: ArrayList是最常用的集合类,底层是由数组实现的 首先可以看到,有两个static final对象数组,也就是被线程间共享的,EMPTY_ELEMENTDATA是非default大小的空集合,原因是要辨别第一次添加元素时应该扩展的大小。 private static final Object[ 阅读全文
posted @ 2018-08-05 10:12 GrayWind 阅读(179) 评论(0) 推荐(0) 编辑