
Java 集合框架源码分析
文章平均质量分 86
针对 Java 集合框架的中常见的类,从源码的角度给予分析,期望能够加深对集合框架的理解。
BridgeGeorge
脚踏实地,展望未来
展开
-
Java 集合框架源码分析-集合框架概述
集合框架介绍 Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。Java集合类的整体框架如下:从上图中可以看出,集合类主要分为两大类:Collectio原创 2015-09-23 17:37:47 · 1272 阅读 · 0 评论 -
Java 集合框架源码分析(一)——ArrayList
简介ArrayList中是平常比较常用的一个集合类,经常帮助我们封装一些实体Bean的List集合。典型使用场景如下: List<Book> bookList=new ArrayList<Book>(); bookList.add(book1); bookList.add(book2); ...ArrayList位于java.util 属于Java集合框架的一部分。层次关系如下。原创 2016-08-08 15:41:17 · 1355 阅读 · 0 评论 -
Java 集合框架源码分析(二)——LinkedList
LinkedList简介LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当作链表来操作外,它还可以当作栈,队列和双端队列来使用。LinkedList同样是非线程安全的,只在单线程下适合使用。LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆。LinkedList源码剖析源码如下(加入了比原创 2017-09-22 17:03:57 · 723 阅读 · 1 评论 -
Java 集合框架源码分析(三)——HashMap
HashMap简介HashMap是基于哈希表实现的,每一个元素都是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阈值)时,同样会自动增长。HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。HashMap实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能原创 2017-09-22 17:19:34 · 637 阅读 · 0 评论 -
Java集合框架源码分析(四)——LinkedHashMap
LinkedHashMap简介LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节点一一串成了一个双向循环链表,因此它保留了节点插入的顺序,可以使节点的输出顺序与输入顺序相同。LinkedHashMap可以用来实现LRU算法(这会在下面的源码中进行分析)。LinkedHashMap同样是非线原创 2017-09-22 17:59:12 · 707 阅读 · 0 评论 -
Java 集合框架源码分析(五)——Vector
Vector介绍Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。 Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。 Vector实现了Serializable接口,可以被序列化,Cloneable接口,能被克隆,实现了RandomAccess接口,支原创 2016-08-15 16:01:01 · 714 阅读 · 0 评论 -
Java 集合框架源码分析(六)——HashTable
HashTable经常和HashMap拿来做对比。HashTable同样是基于哈希表实现的。原创 2016-08-18 09:32:46 · 911 阅读 · 0 评论 -
Java 集合框架源码分析(七)——HashSet
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例,对于HashMap的分析可以参见另外一篇博文Java 集合框架源码分析(三)——HashMap )支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。todo原创 2016-08-23 15:20:13 · 655 阅读 · 0 评论 -
Java 集合框架源码分析(八)—— ConcurrentHashMap
概述ConcurrentHashMap 是Java 并发框架中很重要的一个类,是实现支持高并发、高吞吐量的线程安全的HashMap。当然不能直接对整个hashtable加锁,所以在ConcurrentHashMap中,数据的组织结构和HashMap有所区别。与HashTable区别下面这幅图直观展示了ConcurrentHashMap与HashTable的区别,可以看到HashTable是对整个Ha原创 2017-05-16 12:00:36 · 861 阅读 · 0 评论