Collection框架
集合框架(Collection Framework)泛指java.util包的若干個(gè)類和接口.如Collection,List,ArrayList,LinkedList,Vector(自動(dòng)增長數(shù)組),HashSet,HashMap等. 集合框架中的類主要封裝的是典型的數(shù)據(jù)結(jié)構(gòu),如動(dòng)態(tài)數(shù)組,鏈表,堆棧,集合,哈希表等.
集合框架類似編程中經(jīng)常用到的工具類,使得編碼這專注于業(yè)務(wù)層的實(shí)現(xiàn),不需要從底層實(shí)現(xiàn)相關(guān)細(xì)節(jié)—“數(shù)據(jù)結(jié)構(gòu)的封裝”和”典型算法的實(shí)現(xiàn)”.
http://weipeng2k.iteye.com/blog/286620
集合框架的最根基的接口Collection,看一下它的聲明public interface Collection<E> extends Iterable<E>,可以看出它繼承了Iterable(可迭代的)接口,就相當(dāng)于說Collection的具體實(shí)現(xiàn)類均可以利用Iterator了,這也是集合均支持增強(qiáng)型For循環(huán)的原因。
http://developer.51cto.com/art/200909/149543.htm
Collection框架中實(shí)現(xiàn)比較要實(shí)現(xiàn)什么接口
http://www.aygfsteel.com/fastunit/archive/2008/04/08/191533.html
一個(gè)類實(shí)現(xiàn)了Camparable接口則表明這個(gè)類的對(duì)象之間是可以相互比較的,這個(gè)類對(duì)象組成的集合就可以直接使用sort方法排序。
Comparator可以看成一種算法的實(shí)現(xiàn),將算法和數(shù)據(jù)分離,Comparator也可以在下面兩種環(huán)境下使用:
1、類的設(shè)計(jì)師沒有考慮到比較問題而沒有實(shí)現(xiàn)Comparable,可以通過Comparator來實(shí)現(xiàn)排序而不必改變對(duì)象本身
2、可以使用多種排序標(biāo)準(zhǔn),比如升序、降序等
ArrayList和Vector都是使用數(shù)組方式存儲(chǔ)數(shù)據(jù),此數(shù)組元素?cái)?shù)大于實(shí)際存儲(chǔ)的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號(hào)索引元素,但是插入元素要涉及數(shù)組元素移動(dòng)等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實(shí)現(xiàn)存儲(chǔ),按序號(hào)索引數(shù)據(jù)需要進(jìn)行前向或后向遍歷,但是插入數(shù)據(jù)時(shí)只需要記錄本項(xiàng)的前后項(xiàng)即可,所以插入速度較快。
LinkedList也是線程不安全的,LinkedList提供了一些方法,使得LinkedList可以被當(dāng)作堆棧和隊(duì)列來使用。