Java集合框架主要由Collection和Map两个根接口及其子接口,实现类组成。
JDK不提供Collection接口的直接实现;
所有通用的Collection实现类,都应该提供两个标准构造函数:一个无参构造,创建空集合;
以及一个具有单个参数类型的构造函数集合,允许用户复制任何集合生成所需实现类型的等效集合。
Collection(interface) 派生两个个子接口分别是:List(链表),Set(集合);
List跟数组一样,建立数字索引与对象关联,属于有序的容器,能自动扩充容量,元素有序可重复,list关注索引,查询快,插入删除慢,因为插入删除会影响其他元素的索引,
有两个重要实现类:
1.ArrayList有序可重复,可增长数组,插入删除慢,访问快
2.LinkedList双向链表结构,表中间插入删除快,访问慢
* stack“栈”通常指后进先出的(FIFO)容器,有时也被叫做‘叠加栈’,被压入进栈的最后一个元素先出
Set元素无序不可重复。
有两个重要实现类:
HashSet无序,不同步,集合元素可以使null但只能有一个,提供最快查找
TreeSet由二叉树实现,有序(自然升序排序),不可复,不能放入null
*LinkedHashSet:以插入顺序排序
Map(interface)没有继承Collection,从 不重复的键到值的映射。
三个重要实现类:
1.HashMap(散列表)基于哈希表实现,key-value数据形式,不是线程安全,效率高于HashTable,无序,提供最快查找
Map m = Collections.SychronizeMap(),可达到线程同步效果
2.TreeMap基于红黑树实现,顺序固定(按照元素升序保存),适合元素的顺序遍历
3.HashTable同步,key-value不能为null,线程安全,效率低
4.LinkedHashMap按照插入顺序保存元素,同时保留Hash Map的查询速度
Queue对列,典型的先进先出(FIFO)容器
LinkedList提供方法支持队列的行为,并实现了Queue接口,Linked List可向上转型为Queue
目前Vector,Hashtable和Stack已过时,不建议使用