Java2中的集合框架是广为人知的,本文打算从几个方面来说说自己对这个框架的理解. 下图是java.util.Collection的类图(基本完整,有些接口如集合类均实现的Cloneable.Serializable没有包含进去) 我们常说要继承的话,到底是写个抽象类还是接口,它们区别在于:如果子类确实是父类的一种,应该使用抽象类,描述是"is-a"的关系,而接口则表示一种行为,描述的是"like-a"的关系.但在Java类库里,其实许多原则由于各种原因被打破了,比…
java.util.LinkedList 本文的主要目录结构: 一.LinkedList的特点及与ArrayList的比较 二.LinkedList的内部实现 三.LinkedList添加元素 四.LinkedList查找元素 五.LinkedList删除元素 六.LinkedList修改元素 一.LinkedList的特点及与ArrayList的比较 对比上一篇的ArrayList介绍[传送门:Java8集合框架——ArrayList源码分析],LinkedList因内部实现不同,其元素的内部…
Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和null 键 TreeMap: TreeMap 是有顺序的,按照用户的输入顺序进行排序,TreeMap 按照顺序村塾"键/值"对.值得注意的是 在TreeMap 中是不允许"键"重复的,但是可以允许"值"重复.下面通过一个简单的例子进行说明. impo…
一.JDK中ArrayList是如何实现的 1.先看下ArrayList从上而下的层次图: 说明: 从图中可以看出,ArrayList只是最下层的实现类,集合的规则和扩展都是AbstractList.List.Collection等上层的接口所设定的,而ArrayList实现或继承了上层的规则,然后重新或扩展来处理集合中的数据. 2.看看接口:Iterable<E>中都定义了那些规则? JDK1.8中的源码: package java.lang; import java.util.Iterat…
本文的结构如下: 一.LinkedHashMap 的 Javadoc 文档注释和简要说明 二.LinkedHashMap 的内部实现:一些扩展属性和构造函数 三.LinkedHashMap 的 put 操作和扩容 四.LinkedHashMap 的 get 操作 五.LinkedHashMap 的 remove 操作 一.LinkedHashMap 的 Javadoc 文档注释和简要说明 先膜拜下 LinkedHashMap 的 Javadoc,只能说很佩服,这文档注释把 LinkedHashM…
java.util.ArrayList 以下为主要介绍要点,从 Java 8 出发: 一.ArrayList的特点概述 二.ArrayList的内部实现:从内部属性和构造函数说起 三.ArrayList添加元素和扩容 四.ArrayList删除元素 五.ArrayList查找和修改元素 六.ArrayList的遍历和出现的问题 七.ArrayList的内部元素elementData为何用transient修饰 八.ArrayList和Vector的比较 九.Java8中ArrayList的部分改…
本文的目录结构如下: 一.LinkedHashSet 的 Javadoc 文档注释和简要说明 二.LinkedHashSet 的内部实现:构造函数 三.LinkedHashSet 的 add 操作和 remove 操作 一.LinkedHashSet 的 Javadoc 文档注释和简要说明 还是以官方 javadoc 作为参考进行说明: LinkedHashSet 是 Set 接口的 hash table 和 linked list 实现,而且迭代顺序可预测(按照元素的插入顺序),实际上 Lin…
本文的目录结构: 一.HashSet 的 Javadoc 文档注释和简要说明 二.HashSet 的内部实现:内部属性和构造函数 三.HashSet 的 add 操作和扩容 四.HashSet 的 remove 操作 一.HashSet 的 Javadoc 文档注释和简要说明 截个图,然后来观摩 HashSet 的javadoc,照样是几点总结摘抄: Set 接口的实现类,内部使用了一个 HashMap 实例:不保证 set 的迭代顺序(无序):允许存储 null 通常情况下(假如 hash 分…
java.util.HashMap 本文目录: 一.HashMap 的特点概述和说明 二.HashMap 的内部实现:从内部属性和构造函数说起 三.HashMap 的 put 操作 四.HashMap 的扩容 五.HashMap 的 get 操作 六.HashMap 的 remove 操作 七.参考 一.HashMap的特点概述和说明 关注点 HashMap的相关结论 是否允许空的 key 是 是否允许重复的 key 否,实际上可能会进行覆盖更新 元素有序:读取数据和存放数据的顺序一致 否,读取…
Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析…