源码分析Java集合框架系列-Java集合框架综述
2018-01-28 22:10
393 查看
本系列文章将主要从源码角度分析和讲解Java集合框架的主要架构,各个类的实现和用法。一来可以帮助Java初学者更新的掌握Java集合类,二来可以让自己重新审视这些类的实现细节有助于提高自己的编程能力。
什么是集合框架?
集合框架是一个操作集合元素的一个统一的架构。主要包括一些内容:
接口 表示一个数据结构的抽象,统一定义相关操作方法
实现 具体数据结构的实现类
算法 实现数据结构用到的相关算法
首先要明确,集合代表了一组对象(和数组一样,但数组长度不能变,而集合能)。Java中的集合框架定义了一套规范,用来表示、操作集合,使具体操作与实现细节解耦。
其实说白了,可以把一个集合看成一个微型数据库,操作不外乎“增删改查”四种操作,我们在学习使用一个具体的集合类时,需要把这四个操作的
继承关系
如下图所示,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口
![](https://static.oschina.net/uploads/space/2018/0128/211928_Vk7v_95712.png)
顶层接口
Iterator 一个迭代器,所有集合类提供 iterator 的实现 ,Iterator接口如下:
Collection 所有接口的根接口,代表一组元素的集合。Java并没有提供这个接口直接的实现,而是提供了三个子接口
List 表示一个有序的集合(an ordered collection),允许有重复元素
Set 不允许有重复元素的集合
Queue 用于在处理之前保存多个元素的集合。提供了一些额外的insertion, extraction, and inspection 操作
Map 包含了key-value对。Map不能包含重复的key,但是可以包含相同的value 每个key包含最多一个Value值。
List接口
List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢
实现类
ArrayList
LinedList
Set接口
实现类
HashSet
TreeSet
Map接口
实现类
HashMap
TreeMap
LinkedHashMap
实现集合接口的类一般遵循
总结
有点仓促,后续会陆续分析具体类的源码实现。欢迎大家关注留言,如有错误之处请指正。
参考
https://docs.oracle.com/javase/tutorial/collections/interfaces/index.html
什么是集合框架?
集合框架是一个操作集合元素的一个统一的架构。主要包括一些内容:
接口 表示一个数据结构的抽象,统一定义相关操作方法
实现 具体数据结构的实现类
算法 实现数据结构用到的相关算法
首先要明确,集合代表了一组对象(和数组一样,但数组长度不能变,而集合能)。Java中的集合框架定义了一套规范,用来表示、操作集合,使具体操作与实现细节解耦。
其实说白了,可以把一个集合看成一个微型数据库,操作不外乎“增删改查”四种操作,我们在学习使用一个具体的集合类时,需要把这四个操作的
时空复杂度弄清楚了,基本上就可以说掌握这个类了。
继承关系
如下图所示,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口
![](https://static.oschina.net/uploads/space/2018/0128/211928_Vk7v_95712.png)
顶层接口
Iterator 一个迭代器,所有集合类提供 iterator 的实现 ,Iterator接口如下:
public interface Iterator<E> { boolean hasNext(); E next(); void remove(); //optional }
Collection 所有接口的根接口,代表一组元素的集合。Java并没有提供这个接口直接的实现,而是提供了三个子接口
List 表示一个有序的集合(an ordered collection),允许有重复元素
Set 不允许有重复元素的集合
Queue 用于在处理之前保存多个元素的集合。提供了一些额外的insertion, extraction, and inspection 操作
Map 包含了key-value对。Map不能包含重复的key,但是可以包含相同的value 每个key包含最多一个Value值。
List接口
List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢
实现类
ArrayList
LinedList
Set接口
实现类
HashSet
TreeSet
Map接口
实现类
HashMap
TreeMap
LinkedHashMap
实现集合接口的类一般遵循
<实现方式>+<接口>的命名方式,通用的集合实现类如下表:
Interface | Hash Table | Resizable Array | Balanced Tree | Linked List | Hash Table + Linked List |
---|---|---|---|---|---|
Set | HashSet | TreeSet | LinkedHashSet | ||
List | ArrayList | LinkedList | |||
Deque | ArrayDeque | LinkedList | |||
Map | HashMap | TreeMap | LinkedHashMap |
有点仓促,后续会陆续分析具体类的源码实现。欢迎大家关注留言,如有错误之处请指正。
参考
https://docs.oracle.com/javase/tutorial/collections/interfaces/index.html
相关文章推荐
- Swoft 源码分析系列 - 综述
- Linux-0.11内核源码分析系列:内存管理copy_page_tables()函数分析
- Thinkphp源码分析系列(六)–路由机制
- java集合框架07——Map架构与源码分析
- glibc源码分析之stat系列函数
- Tcpdump源码分析系列6: main函数研究
- Netty系列-服务器端启动源码分析
- Tomcat源码分析环境搭建(Tomcat源码阅读系列之一)
- jQuery源码分析系列(30) : Ajax 整体结构
- jQuery-1.9.1源码分析系列(二)jQuery选择器续1
- jQuery-1.9.1源码分析系列(十) 事件系统——事件绑定
- jQuery-1.9.1源码分析系列(七) 钩子(hooks)机制及浏览器兼容续
- Android磁盘管理系列之vold源码分析(2)
- [原创] jQuery1.6.1源码分析系列(停止更新)
- android缓存系列:DiskLruCache源码分析
- RobHess的SIFT源码分析:综述
- 【Java集合框架源码分析(JDK1.7)】-ArrayList源码分析
- react-native源码分析系列五 绘制js组件
- Android4.4-Launcher源码分析系列之WorkSpace及屏幕滑动
- java源码分析系列一 线程池Executors