文章目录
集合类常见类
ArrayList
特点:
- 快速随机访问
- 能被克隆,Cloneable
- 支持序列化,Java.IO.Serializable
核心源码解读
- 默认容量大小 10
- 最小扩容容量 :minsize=Math.max(10,oldsize+1),10和oldsize+1的最大值
- 扩容 newsize=oldsize*2+1,再跟最小扩容容量minsize比较,如果newsize<minSize,那么扩容容量选取最小容量minsize。
HashMap结构
- 双链表死循环问题:多线程环境下 A-><-B
- 多线程并发,同时操作put,并且同时进行扩容,会有概率产生死循环–扩容的时候逆序,第一次扩容逆序连接 ,后面再连接。就会产生死循环。
HashMap的优化
ConCurrentHashMap
JDK1.7
- 分段锁
JDK1.8
- NODE节点
- volatile修饰
- CAS操作
CopyOnWriteArrayList
CopyOnWriteArrayList和CopyOnWriteSet的区别
HashTable
- 扩容是newsize=oldsize*2+1,+1可以加快扩容速度