1)java集合框架的層次結(jié)構(gòu)
2)使用Collection接口定義的公用方法對集合和線性表操作
3)使用Iterator接口遍歷集合
4)使用JDK的增強(qiáng)for循環(huán)替代迭代Iterator進(jìn)行集合遍歷
5)熟悉Set接口,了解何時及如何使用HashSet,LinkedHashSet或TreeHashSet來存儲元素
6)使用Comparator接口來比較元素
7)熟悉List接口,了解何時以及如何使用ArrayList或者LinkedList來存儲元素 8)區(qū)分Vector與ArrayList,并了解如何使用Vector和Stack
9)使用JDK1.5的一般類型來簡化程序設(shè)計(jì)
10)理解Collection和Map的區(qū)別,知道何時及如何使用HashMap,LinkedHashMap,TreeHashMap來存儲
11)使用Collections類中的靜態(tài)方法 12)使用Arrays類中的靜態(tài)方法
以上就是java集合框架的內(nèi)容,如果你對哪一條不熟悉,說明需要好好的看看。
---------------------------------------------------------------------------------------------------------------------------------------------------
java集合架構(gòu)支持3種類型的集合:規(guī)則集(Set),線性表(List),和圖(Map),分別定義在Set,List,Map中。Set實(shí)例存儲一組互不相同的元素(集合),List實(shí)例存儲一組順序排列的元素(表),Map存儲一組 對象---關(guān)鍵值的映射
總的架構(gòu)如下,非常重要,包含繼承關(guān)系,實(shí)現(xiàn)的分類,一目了然:
Collection接口:
Set接口:
HashSet具體類
LinkedHashSet具體類
TreeSet具體類
List接口: ArrayList具體類
LinkedList具體類
向量類Vector具體類
Stack具體類
Map接口: HashMap類
LinkedHashMap類
TreeMap類 ---------------------------------------------------------------------------------------------------------------------------------------------------
1)先來說Collection接口,它是處理對象集合的根接口,提供了一些公用方法,size,Iterator,add,remove什么的
2)Set和List接口都擴(kuò)展自Collection,Set就是高中數(shù)學(xué)里所說的集合,不允許重復(fù),無序。List就像一個表,可以重復(fù),元素在表里有順序的放著。
3)然后來說Set接口的3種實(shí)現(xiàn):
HashSet的對象必須實(shí)現(xiàn)hashCode方法,javaAPI大多數(shù)類實(shí)現(xiàn)了hashCode方法。 LinkedHashSet實(shí)現(xiàn)了對HashSet的擴(kuò)展,支持規(guī)則集內(nèi)元素的排序,在HashSet中元素是沒有順序的,而在LinkedHashSet中,可以按元素插入集合的順序進(jìn)行提取 TreeSet保證集中的元素是有序的,有2種方法可以實(shí)現(xiàn)對象之間的可比較性:1,添加到TreeSet的對象實(shí)現(xiàn)了Comparable接口;2,給規(guī)則集的元素指定一個比較器(Comparator)
使用提示:
如果希望按照元素插入集合的順序進(jìn)行提取元素,用LinkedHashSet,它的元素按添加的順序存儲
如果沒有上述需求,應(yīng)該用HashSet,它的效率比LinkedHashSet高
LinkedHashSet只是按照添加的的先后順序在存儲時保持順序,要給集合元素添加順序?qū)傩?,需要使用TreeSet(集合元素有排序關(guān)系)。
4)再來說List的幾種實(shí)現(xiàn)
最重要的的當(dāng)然是ArrayList(不同步)和LinkedList,一個使用數(shù)組實(shí)現(xiàn)的動態(tài)擴(kuò)展容量的list,一個是鏈?zhǔn)綄?shí)現(xiàn)的list。
還有就是Vector(同步)類,它除了包含訪問和修改向量的同步方法之外,跟ArrayList一樣。
最后就是Stack類,它繼承自Vector類,,但一般只作為棧的功能來使用,不要去使用Vector里面的功能
5)Map
Map是映射,跟前面的Set和List有本質(zhì)的區(qū)別。
散列圖HashMap,鏈?zhǔn)缴⒘袌DLinkedHashMap,樹形圖TreeHashMap是映射的3種實(shí)現(xiàn),從名字上來說,有了上述Set的3種實(shí)現(xiàn)的分析,這個也是類似的。
HashMap:效率高 LikedHashMap:按照添加順序存儲,可以按添加順序取出 TreeHashMap:排序性
---------------------------------------------------------------------------------------------------------------------------------------------------
Collections類和Arrays類:
Collections類(注意不是Collection):提供了許多靜態(tài)的方法來管理集合,線性表(大多數(shù)是來操作線性表的,比如對線性表復(fù)制,排序之類的,參見API)
Arrays類:提供了對數(shù)組排序,查找,比較,填充元素的各種靜態(tài)方法。
----------------------------------------------------------------------------------------------------------------------------------------------------
一般類型的使用:
是指在java集合中使用泛型來指定添加元素的類型:
HashMap<K,V> map = new HashMap<K,V>() 其中K,V是兩個類類型,表明這里只能填充k,v類型的對象
另外集合中只能添加對象,對于基本數(shù)據(jù)類型,會自動轉(zhuǎn)型為對應(yīng)的包裝類。
|