1.Iterator接口
Iterator接口,這是一個(gè)用于遍歷集合中元素的接口刑赶,主要包含hashNext(),next(),remove()三種方法。它的一個(gè)子接口LinkedIterator在它的基礎(chǔ)上又添加了三種方法柴罐,分別是add(),previous(),hasPrevious()墨缘。也就是說如果是先Iterator接口,那么在遍歷集合中元素的時(shí)候盖桥,只能往后遍歷灾螃,被遍歷后的元素不會(huì)在遍歷到,通常無序集合實(shí)現(xiàn)的都是這個(gè)接口揩徊,比如HashSet腰鬼,HashMap嵌赠;而那些元素有序的集合,實(shí)現(xiàn)的一般都是LinkedIterator接口熄赡,實(shí)現(xiàn)這個(gè)接口的集合可以雙向遍歷姜挺,既可以通過next()訪問下一個(gè)元素,又可以通過previous()訪問前一個(gè)元素彼硫,比如ArrayList炊豪。
2、Collection (集合的最大接口)繼承關(guān)系
——List 可以存放重復(fù)的內(nèi)容
——Set 不能存放重復(fù)的內(nèi)容拧篮,所以的重復(fù)內(nèi)容靠hashCode()和equals()兩個(gè)方法區(qū)分
——Queue 隊(duì)列接口
——SortedSet 可以對集合中的數(shù)據(jù)進(jìn)行排序
Collection定義了集合框架的共性功能词渤。
3.List
4.總結(jié):
List:add/remove/get/set。
1他托,ArrayList:其實(shí)就是數(shù)組掖肋,容量一大,頻繁增刪就是噩夢赏参,適合隨機(jī)查找志笼;
2,LinkedList:增加了push/[pop|remove|pull]把篓,其實(shí)都是removeFirst纫溃;
3,Vector:歷史遺留產(chǎn)物韧掩,同步版的ArrayList紊浩,代碼和ArrayList太像;
4疗锐,Stack:繼承自Vector坊谁。Java里其實(shí)沒有純粹的Stack,可以自己實(shí)現(xiàn)滑臊,用組合的方式口芍,封裝一下LinkedList即可;
5雇卷,Queue:本來是單獨(dú)的一類鬓椭,不過在SUN的JDK里就是用LinkedList來提供這個(gè)功能的,主要方法是offer/pull/peek
Set:add/remove关划⌒∪荆可以用迭代器或者轉(zhuǎn)換成list。
1贮折,HashSet:內(nèi)部采用HashMap實(shí)現(xiàn)的裤翩;
2,LinkedHashSet:采用LinkedHashMap實(shí)現(xiàn)脱货;
3岛都,TreeSet:TreeMap律姨。
Map:put/get/remove振峻。
1臼疫,HashMap/HashTable:散列表,和ArrayList一樣采用數(shù)組實(shí)現(xiàn)扣孟,超過初始容量會(huì)對性能有損耗烫堤;
2,LinkedHashMap:繼承自HashMap凤价,但通過重寫嵌套類HashMap.Entry實(shí)現(xiàn)了鏈表結(jié)構(gòu)鸽斟,同樣有容量的問題;
3利诺,Properties:是繼承的HashTable富蓄。
順便說一下Arrays.asList垂攘,這個(gè)方法的實(shí)現(xiàn)依賴一個(gè)嵌套類较鼓,這個(gè)嵌套類也叫ArrayList