java学习与总结:集合类

文章目录

  • 集合类常见类
  • ArrayList
    • 特点:
    • 核心源码解读
  • HashMap结构
  • HashMap的优化
  • ConCurrentHashMap
    • JDK1.7
    • JDK1.8
  • CopyOnWriteArrayList
  • CopyOnWriteArrayList和CopyOnWriteSet的区别
  • HashTable

集合类常见类

java学习与总结:集合类_第1张图片

ArrayList

特点:

  1. 快速随机访问
  2. 能被克隆,Cloneable
  3. 支持序列化,Java.IO.Serializable

核心源码解读

  1. 默认容量大小 10
  2. 最小扩容容量 :minsize=Math.max(10,oldsize+1),10和oldsize+1的最大值
  3. 扩容 newsize=oldsize*2+1,再跟最小扩容容量minsize比较,如果newsize

HashMap结构

java学习与总结:集合类_第2张图片

  • 双链表死循环问题:多线程环境下 A-><-B
    - 多线程并发,同时操作put,并且同时进行扩容,会有概率产生死循环–扩容的时候逆序,第一次扩容逆序连接 ,后面再连接。就会产生死循环。

HashMap的优化

java学习与总结:集合类_第3张图片
java学习与总结:集合类_第4张图片

ConCurrentHashMap

JDK1.7

java学习与总结:集合类_第5张图片

  • 分段锁

JDK1.8

java学习与总结:集合类_第6张图片

  • NODE节点
    • volatile修饰
    • CAS操作

CopyOnWriteArrayList

java学习与总结:集合类_第7张图片

CopyOnWriteArrayList和CopyOnWriteSet的区别

java学习与总结:集合类_第8张图片

HashTable

java学习与总结:集合类_第9张图片

  • 扩容是newsize=oldsize*2+1,+1可以加快扩容速度

你可能感兴趣的:(leetcode,算法,职场和发展)