
1.Iterator接口
Iterator接口,這是一個用于遍歷集合中元素的接口,主要包含hashNext(),next(),remove()三種方法。它的一個子接口LinkedIterator在它的基礎(chǔ)上又添加了三種方法,分別是add(),previous(),hasPrevious()。也就是說如果是先Iterator接口,那么在遍歷集合中元素的時候,只能往后遍歷,被遍歷后的元素不會在遍歷到,通常無序集合實現(xiàn)的都是這個接口,比如HashSet,HashMap;而那些元素有序的集合,實現(xiàn)的一般都是LinkedIterator接口,實現(xiàn)這個接口的集合可以雙向遍歷,既可以通過next()訪問下一個元素,又可以通過previous()訪問前一個元素,比如ArrayList。
2、Collection (集合的最大接口)繼承關(guān)系
——List 可以存放重復(fù)的內(nèi)容
——Set 不能存放重復(fù)的內(nèi)容,所以的重復(fù)內(nèi)容靠hashCode()和equals()兩個方法區(qū)分
——Queue 隊列接口
——SortedSet 可以對集合中的數(shù)據(jù)進(jìn)行排序
Collection定義了集合框架的共性功能。
3.List


4.總結(jié):
List:add/remove/get/set。
1,ArrayList:其實就是數(shù)組,容量一大,頻繁增刪就是噩夢,適合隨機查找;
2,LinkedList:增加了push/[pop|remove|pull],其實都是removeFirst;
3,Vector:歷史遺留產(chǎn)物,同步版的ArrayList,代碼和ArrayList太像;
4,Stack:繼承自Vector。Java里其實沒有純粹的Stack,可以自己實現(xiàn),用組合的方式,封裝一下LinkedList即可;
5,Queue:本來是單獨的一類,不過在SUN的JDK里就是用LinkedList來提供這個功能的,主要方法是offer/pull/peek
Set:add/remove??梢杂玫骰蛘咿D(zhuǎn)換成list。
1,HashSet:內(nèi)部采用HashMap實現(xiàn)的;
2,LinkedHashSet:采用LinkedHashMap實現(xiàn);
3,TreeSet:TreeMap。
Map:put/get/remove。
1,HashMap/HashTable:散列表,和ArrayList一樣采用數(shù)組實現(xiàn),超過初始容量會對性能有損耗;
2,LinkedHashMap:繼承自HashMap,但通過重寫嵌套類HashMap.Entry實現(xiàn)了鏈表結(jié)構(gòu),同樣有容量的問題;
3,Properties:是繼承的HashTable。
順便說一下Arrays.asList,這個方法的實現(xiàn)依賴一個嵌套類,這個嵌套類也叫ArrayList