包位置:java.util
Collection 层次结构 中的根接口。
Collection 表示一组对象,这些对象也称为 collection
的元素
一些 collection 允许有重复的元素,而另一些则不允许。
一些 collection 是有序的,而另一些则是无序的。
先来了解下集合框架的类图结构。
List是继承Collection的子接口。
List特性:有序、可重复。重复是针对equals()
实现AbstractList的具体类有:
ArrayList、LinkedList、Vector、Stack
12.4.1.ArrayList:
1:可变大小,允许所有元素,包括NULL,没有同步。
2:添加元素时开销较大可在大量插入前调用以下方法来初始化容量。ensureCapacity(int minCap)
3:对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。
12.4.2.LinkedList
1:可用作堆栈、队列或双向队列。
2:可变大小,允许所有元素,包括NULL,没有同步。
3:向List中间插入与删除得开销不大,随机访问则相对较慢(可用ArrayList代替)。
12.4.3.Vector
1:可变大小,允许所有元素,包括NULL,线程同步。
2:当一个Iterator被创建且正在使用,另一个线程改变了Vector状态,这时再调用Iterator时将抛出ConcurrentModificationException(并发修改)
12.4.4 Iterator接口的认识
Iterator 接口
所有的collection接口都有一个iterator方法返回的是一个
Iterator接口对象
Itertator 对象称为迭代器,为遍历容器内的元素而生
Itertator所有的collection接口都有一个iterator方法返回的是一个Iterator接口对象
boolean hasNext();//判断游标右边是否还有元素
object next(); //返回游标右边的元素游标并往后移动一位
void remove();//删除游标左边的元素
12.4.5 Iterator模式的意图和适用性
意图:
提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
适用性:
访问一个聚合对象的内容而无需暴露它的内部表示。
支持对聚合对象的多种遍历。
为遍历不同的聚合结构提供一个统一的接口(即, 支持多态迭代)。
实现Set接口的常用类:HashSet、 TreeSet、 LinkedHashSet特性简介不能包含重复元素,即任意两个元素e1.equal(e2)=false.
1.HashSet: 为快速查找而设计的Set。存入HashSet的对象必须定义hashCode()。
2.TreeSet: 保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列(默认从小到大)。
3.LinkedHashSet: 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
继承自Collection的接口较多,其中常用的接口有:
List
Set
注意Map是独立接口,并未继承Collection
实现Map接口的主要有HashMap,HashTable,SortedHashMap等
实现map接口的常用类有:HashTable、HashMap、WeakHashMap
HashTable:同步,不允许NULL键与NULL值
HashMap:不同步,允许NULL键与NULL值
WeakHashMap:改进后的HashMap,对Key实行弱引用,如果一个Key不再被外部引用,那么该Key可以被GC回收