原文发布于: http://blog.ztgreat.cn/article/63 背景 注:本文假设读者有搜索树(排序树)的基础知识。 我们知道计算的存储系统是一个分级结构(一般来讲,存储器速度越快,价格也越高,因而也越难满足大容量的要求) 首先容量和类型不同的存储器在访问速度上的差异是极其悬殊的,就以我们最常见的磁盘以及内存这两级存储为例: 就传统的旋转式磁盘而言 它的访问速度大致是毫秒量级,而典型的内存呢 大致是在纳秒量级,如果 以一秒为基准,前者是10的-3次方 而后者呢是10的-9次方因此 二者的差异大致是…

2018年12月7日 0条评论 1点热度 阅读全文

个人技术博客:http://blog.ztgreat.cn HashSet,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMap的相关方法来完成,因此如果明白了HashMap那么HashSet也就自然明白,如果还没有看HashMap,那么不建议直接来看HashSet,可以参考我前面写的关于HashMap的博客。 Java集合之HashMap源码分析 Java集合之LinkedHashMap…

2017年11月21日 0条评论 1点热度 阅读全文

个人技术博客:http://blog.ztgreat.cn 在前面我们分析了HashMap和LinkedHashMap,在jdk 1.8 中 HashMap是数组+链表+红黑树实现的,当hash表某个位置上的元素个数超过某个阀值过后就采用红黑树结构,否则采用链表结构,在HashMap中元素 相对插入顺序是无序的,也就是说其遍历顺序不可预测。 LinkedHashMap是基于HashMap实现的,使用了双向链表,保证按照插入顺序或者访问顺序进行迭代 今天我们再来看看TreeMap,从名称我们大致知道,这是一个树形结构…

2017年11月19日 0条评论 2点热度 阅读全文

个人技术博客:http://blog.ztgreat.cn 前面我们分析了HashMap,HashMap在jdk 1.8中是红黑树和链表实现的,具有很好的查询性能,但是HashMap存储元素是无序,这里的无序指的是插入的顺序和遍历的顺序不一致,无法预测遍历的顺序,今天我们来看Map的另一个实现类LinkedHashMap。 LinkedHashMap继承自HashMap,同时也维护了元素的插入顺序,今天我们来看看它是如何实现的。 注:图片来自网络 LinkedHashMap 是基于HashMap,HashMap我们…

2017年11月10日 0条评论 1点热度 阅读全文

个人技术博客:http://blog.ztgreat.cn HashMap应该是使用的一个频率很高的一个集合了,平时用得很多,但是了解并不深入,一起来看看HashMap的结构实现和功能原理。 HashMap(jdk 1.8) HashMap是Java的Map家族中一个普通成员,它根据键的hashCode值存储数据,具有很快的访问速度,但遍历顺序却是不确定的,也就是说插入顺序和遍历顺序没有什么关系的,究其原因在于元素的存储结构,后面我们将会学习到,HashMap最多只允许一条记录的键为null,允许多条记录的值为nu…

2017年10月23日 0条评论 1点热度 阅读全文

前面,我们已经学习了ArrayList,LinkedList,我们接着按着集合框架图学习–Vector。 说好的先膜拜一下网上的Java集合框架图 Vector(jdk 1.8) Vector和ArrayList大同小异,都是动态数组,Vector和ArrayList差别很小,因此本文不会按照ArrayList那样分析,只是简单揭开Vector的面纱,对比一下和ArrayList的区别。 继承体系 Vector和ArrayList的继承体系是一样的。 Vector实现RandmoAccess接口,即提供了随机访问功…

2017年10月12日 0条评论 1点热度 阅读全文

前面,我们已经学习了ArrayList,我们接着学习集合框架——LinkedList。 在看LinkedList之前还是先膜拜一下网上的Java集合框架图 LinkedList(jdk 1.8) 介绍 LinkedList是基于链表实现的,是一种线性的存储结构。 LinkedList是一种双向非循环链表:链表中任意一个存储单元(除头尾结点)都可以通过向前或者向后寻址的方式获取到其前一个存储单元和其后一个存储单元 继承体系 LinkedList 是一个继承于AbstractSequentialList的双向链表。它也…

2017年10月6日 0条评论 2点热度 阅读全文

集合是Java中非常重要而且基础的内容,平时我们使用得最多,其用法也很简单,会使用一个,基本其它就很easy了,得益于集合框架的设计,既然第一步使用已经会了,那么还是有必要深入了解一下,学习其设计技巧,理解其本质,这样不仅会用,还会用得更好,有了更深层次的理解,那么使用过程中都很明白,而不是乱用一通,如果出现问题,也容易排查,今天我们就开始Java 集合框架的探险之旅。 说道Java集合,估计大家最熟悉的下面的图了,这个图是我从网上找的。 这个图很形象,基本上看这个图就能大致理清楚Java集合中的关系,先从Arra…

2017年9月26日 0条评论 7点热度 阅读全文

在工程实践中,一个工程项目往往由若干个子项⽬目组成。这些子项目间往往有两种关系: 1  先后关系,即必须在某个项 ⽬完成后才能开始实施另一个子项目; 2  子项⽬目间无关系,即两个子项目可以同时进行,互不影响。 工厂里产品的生 产线上,一个产品由若干个零部件组成。零部件生产时,也存在这两种关系:先后关系,即一个部件必须在完成后才能生 产另一个部件;部件间无先后关系,即这两个部件可以同时生产。 大学里某个专业的课程学习,有些课程是基础课,它们 可独立于其他课程,即无前导课程;有些课程必须在某些基础…

2014年11月6日 0条评论 1点热度 阅读全文