跳至主要內容
Map - WeakHashMap源码解析

Map - WeakHashMap源码解析

本文主要对Map - WeakHashMap源码解析 源码解析。

Java 7- WeakHashMap

总体介绍

在Java集合框架系列文章的最后,笔者打算介绍一个特殊的成员: WeakHashMap,从名字可以看出它是某种 Map。它的特殊之处在于 WeakHashMap 里的entry可能会被GC自动删除,即使程序员没有调用remove()或者clear()方法。


gavin-james大约 4 分钟Java 集合Java 集合
Map - TreeSet & TreeMap 源码解析

Map - TreeSet & TreeMap 源码解析

本文主要对Map - TreeSet & TreeMap 源码解析。

Java 7 - TreeSet & TreeMap

总体介绍

之所以把TreeSetTreeMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说TreeSet*里面有一个*TreeMap(适配器模式)。因此本文将重点分析TreeMap


gavin-james大约 11 分钟Java 集合Java 集合
Map - LinkedHashSet&Map源码解析

Map - LinkedHashSet&Map源码解析

本文主要对Map - LinkedHashSet&Map 源码解析。

Java 7 - LinkedHashSet&Map

总体介绍

如果你已看过前面关于HashSetHashMap,以及TreeSetTreeMap的讲解,一定能够想到本文将要讲解的LinkedHashSetLinkedHashMap其实也是一回事。LinkedHashSetLinkedHashMap在Java里也有着相同的实现,前者仅仅是对后者做了一层包装,也就是说LinkedHashSet里面有一个LinkedHashMap(适配器模式)。因此本文将重点分析LinkedHashMap


gavin-james大约 6 分钟Java 集合Java 集合
Map - HashSet & HashMap 源码解析

Map - HashSet & HashMap 源码解析

本文主要对Map - HashSet & HashMap进行源码解析。

Java7 HashMap

概述

之所以把HashSetHashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说HashSet里面有一个HashMap(适配器模式)。因此本文将重点分析HashMap


gavin-james大约 10 分钟Java 集合Java 集合
Collection - PriorityQueue源码解析

Collection - PriorityQueue源码解析

本文主要对Collection - PriorityQueue进行源码解析。

概述

前面以Java ArrayDeque为例讲解了StackQueue,其实还有一种特殊的队列叫做PriorityQueue,即优先队列。优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素,C++的优先队列每次取最大元素)。这里牵涉到了大小关系,元素大小的评判可以通过元素本身的自然顺序(*natural ordering*),也可以通过构造时传入的比较器(Comparator,类似于C++的仿函数)。


gavin-james大约 6 分钟Java 集合Java 集合
Collection - Stack & Queue 源码解析

Collection - Stack & Queue 源码解析

本文主要对Collection - Stack & Queue进行源码解析。

Stack & Queue概述

Java里有一个叫做Stack的类,却没有叫做Queue的类(它是个接口名字)。当需要使用栈时,Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque;既然Queue只是一个接口,当需要使用队列时也就首选ArrayDeque了(次选是LinkedList)。


gavin-james大约 7 分钟Java 集合Java 集合
Collection - LinkedList源码解析

Collection - LinkedList源码解析

本文主要对Collection - LinkedList进行源码解析。

概述

LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack)。这样看来,LinkedList简直就是个全能冠军。当你需要使用栈或者队列时,可以考虑使用LinkedList,一方面是因为Java官方已经声明不建议使用Stack类,更遗憾的是,Java里根本没有一个叫做Queue的类(它是个接口名字)。关于栈或队列,现在的首选是ArrayDeque,它有着比LinkedList(当作栈或队列使用时)有着更好的性能。


gavin-james大约 13 分钟Java 集合Java 集合
Collection - ArrayList 源码解析

Collection - ArrayList 源码解析

本文主要对Collection - ArrayList进行源码解析。

概述

ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量(capacity),表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添加元素时,如果容量不足,容器会自动增大底层数组的大小。前面已经提过,Java泛型只是编译器提供的语法糖,所以这里的数组是一个Object数组,以便能够容纳任何类型的对象。


gavin-james大约 9 分钟Java 集合Java 集合
Collection 类关系图

Collection 类关系图

本文主要介绍JDK中Collection和Map相关知识体系,后续章节将对主要对类进行源码解读。

知识体系结构

img
img

介绍

容器,就是可以容纳其他Java对象的对象。*Java Collections Framework(JCF)*为Java开发者提供了通用的容器,其始于JDK 1.2,优点是:


gavin-james大约 2 分钟Java 集合Java 集合