前言

自己也断断续续的读了一些JDK的源码了,并且也写了总结,但是尴尬的是,该忘得还是忘了,所以打算系统的理理,然后没看完一个除了总结,再做个思维导图。阅读JDK的目的有三:

  1. 学好数据结构以及相关算法
    1. 毕竟是内功,该硬啃还是要硬啃
    2. 不希望自己到时候追悔莫及
  2. 能让自己的Java的理解和熟练度更上一层楼
    1. 莫问Python嘞,问就是爱过
  3. 面试
    1. 这也是没得办法,感觉目前面试不问个源码问题,都不像面试

顺带把LeetCode相关的算法刷一遍😄

总体进程

  1. 常用数据结构手撸一遍

    1. 算法第四版
    2. 数据结构与算法分析
  2. 阅读JDK源码,记录

    1. 参考其他大佬的总结,查缺补漏
  3. 相关LeetCode题目刷了

JDK 集合类

所有集合
所有集合

太复杂, 然后去除JUC上的一些实现类, 再看一下

collection-map-不包含JUC中的类
collection-map-不包含JUC中的类

Collection

List

List中的元素是有序的, 可重复的, 主要的实现方式是动态数组链表

List
List

Java中提供的List的实现主要有ArrayList、LinkedList、CopyOnWriteArrayList,另外还有两个古老的类VectorStack

  1. java.util.LinkedList
  2. java.util.Vector
  3. java.util.Stack
  4. java.util.ArrayList
  5. java.util.concurrent.CopyOnWriteArrayList

Queue

队列是遵循着一定原则的入队出队操作的集合, 先进先出, 一般来说在堆尾添加元素(入队), 在队头删除元素(出队), 但是也不一定, 不如优先队列的原则就不同

Queue

Java中提供的Queue的实现有: PriorityQueue、ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue、PriorityBlockingQueue、LinkedTransferQueue、DelayQueue、ConcurrentLinkedQueue。

  1. java.util.PriorityQueue
  2. java.util.concurrent.ArrayBlockingQueue
  3. java.util.concurrent.LinkedBlockingQueue
  4. java.util.concurrent.SynchronousQueue
  5. java.util.concurrent.PriorityBlockingQueue
  6. java.util.concurrent.LinkedTransferQueue
  7. java.util.concurrent.DelayQueue
  8. java.util.concurrent.ConcurrentLinkedQueue
Deque

Deque是一种特殊的队列,它的两端都可以进出元素,故而得名双端队列(Double Ended Queue)。

Deque
Deque

Java中提供的Deque的实现主要有ArrayDeque、LinkedBlockingDeque、ConcurrentLinkedDeque、LinkedList。

  1. java.util.Deque
  2. java.util.ArrayDeque
  3. java.util.concurrent.ConcurrentDeque

Set

Set
Set

Java中提供的Set的实现主要有HashSet、LinkedHashSet、TreeSet、CopyOnWriteArraySet、ConcurrentSkipListSet

  1. java.util.HashSet
  2. java.util.TreeSet
  3. java.util.LinkedHashSet
  4. java.util.concurrent.CopyOnWriteArraySet
  5. java.util.concurrent.ConcurrentSkipListSet

Map

Map
Map

java中提供的Map的实现主要有HashMap、LinkedHashMap、WeakHashMap、TreeMap、ConcurrentHashMap、ConcurrentSkipListMap,另外还有两个比较古老的Map实现HashTable、Properties

  1. java.util.TreeMap
  2. java.util.WeakHashMap
  3. java.util.LinkedHashMap
  4. java.util.HashMap
  5. java.util.concurrent.ConcurrentHashMap
  6. java.util.concurrent.ConcurrentSkipListMap
  7. java.util.Hashtable
  8. java.util.Properties

集合类概述

逛博客的时候,发现一张神图

java-collection-cheat-sheet
java-collection-cheat-sheet

Java Collections Framework Cheat Sheet

阅读套路

大体上的阅读框架写好了,接下来就是细致的硬啃了,可以先从顶层的接口开始,然后是Abstact类,这样方便理解不同的具体的集合类必备的通用方法等,然后再看这些具体类对这些通用方法的具体实现。顺序还是老样子:,然后是其他的细节部分。

References