1.集合框架
集合接口:代表集合的抽象数据类型。如:Collection、List和Map
具体实现类:是集合接口的具体实现。如:ArrayList、LinkedList和HashMap
算法:是实现集合接口的对象里的方法执行的一些有用的计算。如:Collections
集合框架体系图:
二.集合接口
1.Collection接口,是最基本的集合接口,Java不提供直接继承自Collection的类,只提供继承于它的子接口。
2.List接口,是一个有序的Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引来访问List中的元素,第一个元素的索引为0,而且允许有相同的元素。
List:有序,允许重复,通过索引精确查找;(List有序重复)
3.Set接口,是一个无序的Collection,不允许有重复的元素。
4.Map接口,将唯一的键映射到值。
Set和List的区别:
1.Set接口实例存储的是无序的,且不可以重复的数据;List接口实例存储的是有序的,可以重复的元素。
2.Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变(实现类有HsahSet、TreeSet)
3.List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变(实现类有AaaryList、LinkedList、Vector)
三.具体实现类
1.List接口实现类:
(1)LinkedList实现了List接口,允许有null元素,主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,LinkeList查找效率低。
(2)ArrayList实现了List接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。
2.Set接口实现类:
(1)HashSet实现了Set接口,不允许重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。
(2)TreeSet,实现了Set接口,可以实现排序等功能。
3.Map接口实现:
(1)HashMap实现了Map接口,是一个散列表,它存储的内容是键值对(key-value)映射。该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键位null,不支持线程同步。
(2)HashTable
4.Vector类:
该类和ArrayList相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍。
5.Stack栈:
栈Stack是Vector的一个子类,实现了一个标准的先进后出的栈。