Java基础之Collection
1.继承关系图
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问题(同上) |