Java Collection Framework 源码剖析
本专栏主要从源码角度剖析Java Collection Framework各成员类的底层实现原理和技巧,包括但不限于List、Map等经典容器类、ConcurrentHashMap等并发容器类,并说明各容器类间的区别、联系以及应用场景,以便不断加深对Java容器框架的理解。
书呆子Rico
不着急,慢慢来。
展开
-
Map 综述(四):彻头彻尾理解 HashTable
Hashtable与HashMap都是Map族中较为常用的实现,也都是Java Collection Framework 的重要成员,它们的本质都是链表数组。本文深入JDK源码并从定义、构造、结构、存取等四个方面深入解读了Hashtable的底层结构与存储逻辑,并阐述了HashMap、Hashtable与ConcurrentHashMap三者间的联系与区别。原创 2017-06-04 22:55:42 · 10347 阅读 · 5 评论 -
Map 综述(三):彻头彻尾理解 ConcurrentHashMap
ConcurrentHashMap是J.U.C的重要成员,它是HashMap的一个线程安全的版本。在默认理想状态下,ConcurrentHashMap可以支持16个线程执行并发写操作及任意数量线程的读操作。本文将结合Java内存模型和JDK源代码,剖析其高并发的具体实现机制,包括在JDK中的定义和结构、并发存取、重哈希和跨段操作,并着重剖析了ConcurrentHashMap读操作不需要加锁的内在奥秘和原理。原创 2017-05-27 17:03:10 · 138034 阅读 · 68 评论 -
Java 迭代器综述
迭代器模式是与集合共生共死的。一般来说,我们只要实现一个容器,就需要同时提供这个容器的迭代器。使用迭代器的好处是:封装容器的内部实现细节,对于不同的集合,可以提供统一的遍历方式,简化客户端的访问和获取容器内数据。在此基础上,我们可以使用 Iterator 完成对集合的遍历,此外,for 循环和foreach 语法也可以用于遍历集合类。ListIterator 是容器 List容器族特有的双向迭代器。原创 2016-12-06 15:40:27 · 3792 阅读 · 9 评论 -
Java Collection Framework : Collection 接口
Java 容器类根接口Collection 的详细描述。原创 2016-10-27 18:58:48 · 5003 阅读 · 2 评论 -
Java Collection Framework : List
List 包括 List接口以及List接口的所有实现类。因为 List 接口实现了 Collection 接口,所以 List 接口拥有 Collection 接口提供的所有方法,同时又因为 List 是列表类型,所以 List 接口还提供了一些适合自身的方法。ArrayList 是一个动态数组,实现了数组动态扩容,随机访问效率高;LinkedList是一个双向链表,随机插入、随机删除效率高,可用作队列的实现。原创 2016-10-28 13:43:22 · 8466 阅读 · 10 评论 -
Map 综述(一):彻头彻尾理解 HashMap
摘要: HashMap是Map族中最为常用的一种,也是 Java Collection Framework 的重要成员。本文首先给出了 HashMap 的实质并概述了其与 Map、HashSet 的关系,紧接着给出了 HashMap 在 JDK 中的定义,并结合源码分析了其四种构造方式。最后,通过对 HashMap 的数据结构、实现原理、源码实现三个方面的剖析,深入到它底层 Hash 存储机...原创 2017-03-17 17:54:18 · 94739 阅读 · 77 评论 -
算法实战:根据Key或Value对Map进行排序及其应用
我们知道,Map是 Java Collection Framework 的重要成员,也是我们最常用的容器类之一。Map的实现多种多样,包括HashMap、LinkedHashMap等。但是,无论实际中使用哪种实现,我们在编程过程中常常会遇到诸如根据Key或Value对Map进行排序、保持Map插入顺序等问题,本文特别针对以上几个问题给出了具体解法,并分享华为一道与我们主题极为相关的笔试题。原创 2017-05-11 18:13:19 · 9483 阅读 · 6 评论 -
Map 综述(二):彻头彻尾理解 LinkedHashMap
HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap。由于LinkedHashMap是HashMap的子类,所以LinkedHashMap会拥有HashMap的所有特性。此外,LinkedHashMap可以很好的支持LRU算法。原创 2017-05-12 11:52:49 · 191077 阅读 · 52 评论