1.Collection接口是最基本的接口 一个Collection代表一组Object,Collection派生的两个接口Set和List
2.List是有序的Collection,能够精确的控制每个元素的插入位置。使用下标访问每个元素,List允许有相同的元素
3.LinkedList实现了List接口,允许null元素,LinkedList可用作堆栈(stack),队列(queue),或双向队列(deque),LinkedList没有同步方法,多线程同时访问List,必须实现访问同步,一个解决办法是:
List list = Collections.synchronizedList(new LinkedList());
4.ArrayList实现了可变大小的数组,允许所有元素,包括null,一个ArrayList实例有一个容量(Capacity),非同步的
5.Vector和ArrayList很像,区别Vector是线程同步的
6.Stack继承自Vector,实现一个先进后出的堆栈。Stack刚创建的时候是空的
7.Set接口是不包含重复元素的Collection,最多允许有个null元素
8.Map没有继承Collection接口,是一组key-value映射
9.HashTable继承Map接口,实现一个key-value映射的hash表,任何非空的对象都可作为key或value,线程同步
作为key的对象通过计算散列函数来确定与其对应的value的位置,任何作为key的对象都必须实现hashCode()和equals()方法,注意两个不同对象的hashcode可能相同
10.HashMap和HashTable类似,但HashMap是非同步的,并且允许为null
11.WeakHashMap是一种改进的HashMap,对key实行“弱引用”,如果一个key不再被外部引用,该key可以被GC回收。
注:
如果涉及到堆栈,队列等操作,要考虑使用List,需要快速的插入和删除元素的使用LinkedList,需要快速随机访问,使用ArrayList
对hash表的操作,作为key的对象要正确重写equals和hashCode方法
尽量返回接口而非实际的类型
网友评论