jdk 阅读顺序

本文深入剖析了Java核心类库,从java.lang包的基础类如Object、String、Thread,到集合框架如ArrayList、HashMap,再到并发编程工具如ConcurrentHashMap、ThreadPoolExecutor。详细介绍了各个类和接口的主要功能与使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    2、java.util

  25. AbstractList 1

  26. AbstractMap 1

  27. AbstractSet 1

  28. ArrayList 1

  29. LinkedList 1

  30. HashMap 1

  31. Hashtable 1

  32. HashSet 1

  33. LinkedHashMap 1

  34. LinkedHashSet 1

  35. TreeMap 1

  36. TreeSet 1

  37. Vector 2

  38. Queue 2

  39. Stack 2

  40. SortedMap 2

  41. SortedSet 2

  42. Collections 3

  43. Arrays 3

  44. Comparator 3

  45. Iterator 3

  46. Base64 4

  47. Date 4

  48. EventListener 4

  49. Random 4

  50. SubList 4

  51. Timer 4

  52. UUID 4

  53. WeakHashMap 4
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    3、java.util.concurrent

  54. ConcurrentHashMap 1

  55. Executor 2

  56. AbstractExecutorService 2

  57. ExecutorService 2

  58. ThreadPoolExecutor 2

  59. BlockingQueue 2
    7)AbstractQueuedSynchronizer 2
    8)CountDownLatch 2

  60. FutureTask 2
    10)Semaphore 2
    11)CyclicBarrier 2
    13)CopyOnWriteArrayList 3
    14)SynchronousQueue 3
    15)BlockingDeque 3

  61. Callable 4
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    4、java.util.concurrent.atomic

  62. AtomicBoolean 2

  63. AtomicInteger 2

  64. AtomicLong 2

  65. AtomicReference 3
    1
    2
    3
    4
    5、java.lang.reflect

  66. Field 2

  67. Method 2
    1
    2
    6、java.lang.annotation

  68. Annotation 3

  69. Target 3

  70. Inherited 3

  71. Retention 3

  72. Documented 4

  73. ElementType 4

  74. Native 4

  75. Repeatable 4
    1
    2
    3
    4
    5
    6
    7
    8
    7、java.util.concurrent.locks

  76. Lock 2

  77. Condition 2

  78. ReentrantLock 2

  79. ReentrantReadWriteLock 2
    1
    2
    3
    4
    8、java.io

  80. File 3

  81. InputStream 3

  82. OutputStream 3

  83. Reader 4

  84. Writer 4
    1
    2
    3
    4
    5
    9、java.nio

  85. Buffer 3

  86. ByteBuffer 4

  87. CharBuffer 4

  88. DoubleBuffer 4

  89. FloatBuffer 4

  90. IntBuffer 4

  91. LongBuffer 4

  92. ShortBuffer 4
    1
    2
    3
    4
    5
    6
    7
    8
    10、java.sql

  93. Connection 3

  94. Driver 3

  95. DriverManager 3

  96. JDBCType 3

  97. ResultSet 4

  98. Statement 4
    1
    2
    3
    4
    5
    6
    11、java.net

  99. Socket 3

  100. ServerSocket 3

  101. URI 4

  102. URL 4

  103. URLEncoder 4
    1
    2
    3
    4
    5
    阅读笔记简版
    1、Object

wait(), notify(), notifyAll(), wait(timeout)
hashCode(), equals()
clone()
2、String

char[] value
int hash
equals(), startWith(), endWith(), replace
3、AbstractStringBuilder

char[] value
int count
扩容:翻倍,不够取所需最小
4、StringBuffer

继承AbstractStringBuilder
synchronized方法保证线程安全
char[] toStringCache
5、StringBuilder 继承AbstractStringBuilder

6、ArrayList

Object[] elementData
int size
默认大小10
扩容:1.5倍,不够取所需最小
7、LinkedList

Node {E item, Node prev, Node next}
int size
Node first
Node last
linkFirst(), linkLast(), linkBefore(), unLinkFirst(), unLinkLast(), unLink(), indexOf()
8、HashMap

Node{int hash, K key, V value, Node next}
默认容量16,负载因子0.75f
int size, modCount, threshold, float loadFactor
Node[] table
Set entrySet
put():根据key算hash,根据容量和hash算index,table[index]没有直接添加到数组中,table[index]有,若index位置同一个key则更新,否则遍历next是否有,有则更新,无则新增,最后根据thread与size判断是否扩容。注:扩容时容量翻倍,重新算hash复制到新数组
7)get()类似
注:先比较hash,若相等在比较equals
9、Hashtable

结构实现与HashMap基本一致
2)通过synchronized方法保证线程安全
10、HashSet:委托给HashMap,其Value是同一个默认对象

11、LinkedHashMap继承HashMap

Entry{HashMap.Node, Entry before, after}
Entry head, tail
重写newNode()添加节点时,除像HashMap中添加外,保存before、after信息
12、LinkedHashSet继承HashSet:底层存储使用的LinkedHashMap,从而保证有序

13、AbstractMap维护EntrySet,AbstractSet维护Iterator,AbstractList维护Iterator

14、ConcurrentHashMap

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]加锁
15、TreeMap
1)红黑树,即自平衡二叉查找树,时间复杂度O(logn)
2)Entry{K k, V v, Entry parent, left, right, boolean color}
3)Entry root,int size, int modeCount

16、TreeSet:委托TreeMap实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值