1、Java的容器类库主要有两种类型:collection和map
* collection和Map的主要去区别在于:容器内的每一个“槽”所存储的元素个数不同。
* collection类型中,每个“槽”只有一个元素,Map类型中,持有Key-value关联(key叫作键,value叫作值)像一个小型数据库。
* 所有的Java容器类都可以自动调整自己的尺寸。
2、各自的旗下的子类关系
2.1 Collection的子类如下:
——List:将以特定次序存储元素,所以取出来的顺序可能和放入顺序不同。
——ArrayLIst:擅长随机访问元素,但在List中间插入,删除,移动元素比较慢。
——LinkedList:插入,删除,移动元素方便,但是随机访问差。
——Vector
——Set:每个值只能保存一个对象,不能含有重复元素。
——hashSet:使用散列函数
——TreeSet:使用红黑树
——LinkedHashSet:使用链表结合散列函数
——Queue:先进先出的容器
——PriorityQueue
2.2 Map的子类:
——HashMap
——TreeMap
——HashTable
3、其他特征
(1)List、Set、Map将所有对象一律视为Object类型。
(2)Collection、List、Set、Map都是接口,不能实例化。继承自他们的ArrayList等都是具体的class,这些才可以被实例化。
(3)Vector容器确切的知道它所持有的对象隶属什么类别。Vector不能进行边界检查。
4、Collection是针对集合类的一个帮助类,它提供了一些静态的方法实现对各种集合的的搜索,排序,线程完全化等操作。
如Collection.sort(List list);
5、如何选择容器类
(1)容器类和Array的区别、择取
容器类仅能持有对象引用(指向对象的指针),而不是将对象信息复制一份至数列中的某一位置。一旦将对象置入容器内,便损失对象的类别信息。
(2)
* 在各种List中,最好的做法是以ArrayLIst作为默认选择
* 当插入、删除频繁的时候。使用LinkedList;
* Vector总比ArrayList慢。
* 在各种Set中,HashSet通常优于HashTree(插入、查找)
* 只有当需要产生一个经过排序的序列时,才用TreeSet。HashTree的意义是用来维护其内元素的排列状态
* 在各种Map中,HashMap用于快速查找。
* 当元素的个数固定时,最好使用Array,因为Array的效率是最高的。
——摘自《Java程序员面试宝典》