List
list接口继承了Collection接口;
list集合为列表类型,以元素进入的特定顺序按线性方式存储元素,可以通过对象的索引操作对象;
List的三大实现类:
ArrayList:ArrayList实现的List集合采用数组结构保存对象,便于堆积和进行快速的随机访问,不适用于在指定位置插入或删除元素,因为当要删除或增加指定位置的元素 时,其后的所有元素都要进行移动
LinkedList:LinkedList实现的List集合采用链表结构保存对象,便于向集合插入和删除对象,随机访问对象的数度较慢,因为当删除或增加元素时,只需修改链接的位置,不用移动对象
Vector:Vector实现的List集合采用可增长的对象数组保存对象Vector的大小可以根据需要增大或减小
,以适应创建Vector后进行添加或移除项的操作
其中ArrayList与LinkedList的实现都不是同步的,Vector的实现是同步的
List总结:
1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ];
2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];
3. 所有的List中可以有null元素,例如[ tom,null,1 ];
4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作
Set
set不包含重复元素的collection,set是无序的集合
set三大实现类:
HashSet: HashSet按Hash算法来存储集合的元素,因此具有很好的存取和查找性能,HashSet的实现不是同步的,HashSet中集合元素值可以使null。
TreeSet:TreeSet是SortedSet接口的唯一实现,TreeSet可以确保集合元素处于排序状态(元素是有序的)。
Set总结:
1.Set实现的基础是Map(HashMap);
2.Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象
Map
Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value
Map的两大实现类
HashMap:HashMap是线程安全的,HashMap可以使用null作为key或value
Hashtable:HashTable是线程不安全的,Hashtable不允许使用null作为key和value,如果为null,则引发NullPointerException异常