注:标题为包名,后面序号为优先级1-4,优先级递减

1、java.lang

序号 类名 优先级 备注
1 Object 1
2 String 1
3 AbstractStringBuilder 1
4 StringBuffer 1
5 StringBuilder 1
6 Boolean 2
7 Byte 2
8 Double 2
9 Float 2
10 Integer 2
11 Long 2
12 Short 2
13 Thread 2
14 ThreadLocal 2
15 Enum 3
16 Throwable 3
17 Error 3
18 Exception 3
19 Class 4
20 ClassLoader 4
21 Compiler 4
22 System 4
23 Package 4
24 Void 4

2、java.util

序号 类名 优先级 备注
1 AbstractList 1
2 AbstractMap 1
3 AbstractSet 1
4 ArrayList 1
5 LinkedList 1
6 HashMap 1
7 Hashtable 1
8 HashSet 1
9 LinkedHashMap 1
10 LinkedHashSet 1
11 TreeMap 1
12 TreeSet 1
13 Vector 2
14 Queue 2
15 Stack 2
16 SortedMap 2
17 SortedSet 2
18 Collections 3
19 Arrays 3
20 Comparator 3
21 Iterator 3
22 Base64 4
23 Date 4
24 EventListener 4
25 Random 4
26 SubList 4
27 Timer 4
28 UUID 4
29 WeakHashMap 4

3、java.util.concurrent

序号 类名 优先级 备注
1 ConcurrentHashMap 1
2 Executor 2
3 AbstractExecutorService 2
4 ExecutorService 2
5 ThreadPoolExecutor 2
6 BlockingQueue 2
7 AbstractQueuedSynchronizer 2
8 CountDownLatch 2
9 FutureTask 2
10 Semaphore 2
11 CyclicBarrier 2
12 CopyOnWriteArrayList 3
13 SynchronousQueue 3
14 BlockingDeque 3
15 Callable 4

4、java.util.concurrent.atomic

序号 类名 优先级 备注
1 AtomicBoolean 2
2 AtomicInteger 2
3 AtomicLong 2
4 AtomicReference 3

5、java.lang.reflect

序号 类名 优先级 备注
1 Field 2
2 Method 2

6、java.lang.annotation

序号 类名 优先级 备注
1 Annotation 3
2 Target 3
3 Inherited 3
4 Retention 3
5 Documented 4
6 ElementType 4
7 Native 4
8 Repeatable 4

7、java.util.concurrent.locks

序号 类名 优先级 备注
1 Lock 2
2 Condition 2
3 ReentrantLock 2
4 ReentrantReadWriteLock 2

8、java.io

序号 类名 优先级 备注
1 File 3
2 InputStream 3
3 OutputStream 3
4 Reader 4
5 Writer 4

9、java.nio

序号 类名 优先级 备注
1 Buffer 3
2 ByteBuffer 4
3 CharBuffer 4
4 DoubleBuffer 4
5 FloatBuffer 4
6 IntBuffer 4
7 LongBuffer 4
8 ShortBuffer 4

10、java.sql

序号 类名 优先级 备注
1 Connection 3
2 Driver 3
3 DriverManager 3
4 JDBCType 3
5 ResultSet 4
6 Statement 4

11、java.net

序号 类名 优先级 备注
1 Socket 3
2 ServerSocket 3
3 URI 4
4 URL 4
5 URLEncoder 4

12、阅读笔记简版

12.1、Object
  • 1) wait(), notify(), notifyAll(), wait(timeout)
  • 2) hashCode(), equals()
  • 3) clone()
12.2、String
  • 1) char[] value
  • 2) int hash
  • 3) equals(), startWith(), endWith(), replace
12.3、AbstractStringBuilder
  • 1) char[] value
  • 2) int count
  • 3) 扩容:翻倍,不够取所需最小
12.4、StringBuffer
  • 1) 继承AbstractStringBuilder
  • 2) synchronized方法保证线程安全
  • 3) char[] toStringCache
12.5、StringBuilder 继承AbstractStringBuilder
12.6、ArrayList
  • 1) Object[] elementData
  • 2) int size
  • 3) 默认大小10
  • 4) 扩容:翻倍,不够取所需最小
12.7、LinkedList
  • 1) Node {E item, Node prev, Node next}
  • 2) int size
  • 3) Node first
  • 4) Node last
  • 5) linkFirst(), linkLast(), linkBefore(), unLinkFirst(), unLinkLast(), unLink(), indexOf()
12.8、HashMap
  • 1) Node{int hash, K key, V value, Node next}
  • 2) 默认容量16,负载因子0.75f
  • 3) int size, modCount, threshold, float loadFactor
  • 4) Node[] table
  • 5) Set entrySet
  • 6) put():根据key算hash,根据容量和hash算index,table[index]没有直接添加到数组中,table[index]有,若index位置同一个key则更新,否则遍历next是否有,有则更新,无则新增,最后根据thread与size判断是否扩容。注:扩容时容量翻倍,重新算hash复制到新数组
  • 7)get()类似
    注:先比较hash,若相等在比较equals
12.9、Hashtable
  • 1) 结构实现与HashMap基本一致
  • 2)通过synchronized方法保证线程安全
12.10、HashSet:委托给HashMap,其Value是同一个默认对象
12.11、LinkedHashMap继承HashMap
  • 1) Entry{HashMap.Node, Entry before, after}
  • 2) Entry head, tail
  • 3) 重写newNode()添加节点时,除像HashMap中添加外,保存before、after信息
12.12、LinkedHashSet继承HashSet:不知道如何实现的顺序?
12.13、AbstractMap维护EntrySet,AbstractSet维护Iterator,AbstractList维护Iterator
12.14、ConcurrentHashMap

1) JDK1.7及以前:

  • a、Segment[] ,HashEntry[] , HashEntry{hash, k, v, next}
  • b、根据key算hash,根据hash和Segment的大小算位置,每个segment拥有一个自己的HashEntry[]
  • c、get():不加锁,volatile类型
  • d、put(): 对相应segment加锁
  • e、size():各HashEntry[] 之和,先不加锁算两遍,若一致则返回,若不一致则加锁重新计算

2)JDK1.8

  • a、Node{hash, key, value, next}
  • b、Node[] table
  • c、大多数操作类似于HashMap,不同CAS方式设置,根据key算hash,在根据hash和容量算index,对table[index]加锁,从而达到更大的并发量
  • d、get(): 同HashMap
  • e、put(): 对table[index]加锁
12.15、TreeMap
  • 1)红黑树,即自平衡二叉查找树,时间复杂度O(logn)
  • 2)Entry{K k, V v, Entry parent, left, right, boolean color}
  • 3)Entry root,int size, int modeCount
12.16、TreeSet:委托TreeMap实现