Java基础之Collection

1.继承关系图

Java基础之Collection

1.特性表
接口 属性 特性 线程安全 常见注意问题 比较
List ArrayList 初始大小:10
扩容:1.5倍
存储:Object[]
顺序存储
随机访问快速
不易插入和删除某元素,需要执行数组拷贝
不安全,fail-fast机制,可用Collections.synchronizedList(list)实现,其原理为给各个方法加对象锁(iterator()和listIterator()方法除外) subList()方法得到的是原list的试图,对某一方的修改会导致另一方的改变 Vector的同步由synchronized修饰方法实现,而Collections实现同步为synchronized锁对象成代码块来调用原list对应方法,安全上后者更好但不用方法间也存在竞争
LinkedList 双向链表 链表存储
方便插入删除操作
不能随机访问
遍历慢
有实现Queue接口,可当顺序队列使用
不安全,fail-fast机制,安全实现同ArrayList(同上) subList问题(同上)
Vector 初始大小:10
扩容:如果构造函数传入扩容增量则为(原长度+增量)否则为(原长度*2),
存储:Object[]
同ArrayList
有子类Stack
安全,实现为所有方法增加synchronized关键字,其不保证多线程调不同方法出现错误。思考同步方法和同步代码块 subList问题(同上)