【Java技術(shù)】Collection框架體系結(jié)構(gòu)
本文系裝載,僅供參考學(xué)習(xí) ?來源:源碼時代
Collection的框架體系是面試會經(jīng)常問的問題:Collection框架體系主要分為Set接口和List接口,Queue接口,每個接口都有自己的特點(diǎn);
List接口特點(diǎn):允許重復(fù)的,對集合中對象進(jìn)行索引;有順序的;
比較具有代表性兩個:ArrayList和LinkedList;
那ArrayList和LinkedList的區(qū)別是什么呢?
①存儲方式上面的區(qū)別:
ArrayList: 基于數(shù)組實(shí)現(xiàn)的容器類;如下代碼實(shí)現(xiàn):
LinkedList:基于鏈表實(shí)現(xiàn)的容器類;
②共性:ArrayList和LinkedList都是List接口的實(shí)現(xiàn)類;
③效率上面的區(qū)別:
ArrayList在添加,刪除的時候,速度慢;在查找的時候,速度快;
LinkedList在添加,刪除的時候,速度快,在查找的時候,速度慢;
LinkedList可以充當(dāng)隊(duì)列,堆棧,多一些操作頭尾的方法;比如addFirst, addLast方法;
Set接口特點(diǎn):不允許重復(fù)的值,沒有順序的;
比較具有代表性的兩個:HashSet和TreeSet
HashSet和TreeSet的區(qū)別:
HashSet判斷重復(fù)的標(biāo)準(zhǔn):通過對象的hashCode方法和equals方法;
HashSet本質(zhì)通過HashMap實(shí)現(xiàn);
TreeSet判斷重復(fù)的標(biāo)準(zhǔn):添加到TreeSet里面的對象,要么需要實(shí)現(xiàn)Comparable接口,覆寫compareTo方法(自然排序),要么實(shí)現(xiàn)Comparetor接口,覆寫compare方法(比較器);
TreeSet本質(zhì)通過TreeMap實(shí)現(xiàn) ,如下代碼所示:
Queue接口特點(diǎn):在處理元素前用于保存元素的Collection;隊(duì)列通常FIFO(先進(jìn)先出)的方式排列各個元素;LinkedList也是實(shí)現(xiàn)了Queue接口的;
Collection是層次結(jié)構(gòu)的根接口,但是它上面還有Iterable接口,它繼承Iterable,說明什么情況?
繼承Iterable,說明可以調(diào)用Iterable接口里面的iterator方法,得到一個迭代器(Iterator),通過這個迭代器,可以進(jìn)行遍歷元素;Iterator下面還有一個子類叫做ListIterator表示一個雙向的迭代器,可以進(jìn)行正向迭代,還可以進(jìn)行反向迭代器;
如下Collection體系結(jié)構(gòu)圖: