使用特定容器时应该 使用接口变量,保留其实际的对象实现类型
Collection接口
- add方法
- iterator方法
返回迭代器
迭代器
实现
list
- linkedlist 数组中间删除或增加元素代价小
- linkedlist 不支持随机访问,仅支持迭代器访问,ArrayList随机访问支持良好
- Vector默认同步执行所有方法, ArrayList需额外同步线程
Set
hash 实现set,根据元素的hash code放在不同的bucket里,bucket为链表(相比完美hash,用链表解决冲突)
元素需要实现hashcode接口tree实现set, 元素放入平衡二叉树,有序,查找时间为logm,慢于hash
元素需要实现Comparable接口
队列
- 双端队列
- 优先级队列,内部为堆形式实现
元素需要实现Comparable接口
map
- key作为set元素,同样分为hash和tree实现,关联value
- 提供的集合视图
- KeySet()返回key集,只是set接口
- Values()返回value集合
- entrySet()返回kv对集合
记住get/put顺序的set/MAP
- 额外的将元素linked,以记住其get/put顺序
- linkedHashMap按访问顺序排序key,可以实现最多访问驻留有限容量
视图
某个集合接口对象的浅包装