程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> JDK源碼分析之集合01總體框架,jdk源碼01總體

JDK源碼分析之集合01總體框架,jdk源碼01總體

編輯:JAVA綜合教程

JDK源碼分析之集合01總體框架,jdk源碼01總體


集合類是java提供的工具類,主要包括List、Set、Map和vector等類型。所有的集合相關類都位於java.util.*內。

集合類的總體框架圖如下圖所示:

對總體框架的說明:

    集合框架中最頂層的接口有Iterator、Collection和Map三個。其中Itireator是所有迭代器需要實現的接口,Collection是所有的線性結構集合所要實現的接口,Map是所有的非線性集合所要實現的接口,元素以Key、value的形式保存。

    Collection下層中包含了Queue、List和set三個自接口。這三種接口有分別有各自的特點。其中Queue對應的數據結構是隊列其特點是提供了兩個基本操作:在隊尾添加元素和在隊列的頭部刪除元素,具有先進先出的特點;List中元素同樣是以線性結構存儲,並且可以存在重復元素;Set具有和Collection一樣的接口,Set的特點是不允許存放重復元素,放入Set中的元素必須重寫equals方法以確保元素的唯一性。再下一層的結構中定義了AbstractCollection、AbstractList、AbstractSet、AbstractSequentialList三個抽象類,在抽象類中實現了部分方法,這種設計使用了適配器的設計模式,這樣做的好處是子類可以選擇性的實現一些方法。最底層是Collection類系中的具體集合類,有ArrayList、LinkedList、Vector、Stack、HashSet、TreeSet六個集合類。其中ArrayList是采用數組的形式來保存對象,在通過使用索引訪問元素的效率相對較高,但是插入刪除效率低;是使用鏈表來保存元素,在使用索引訪問元素時效率相對較低,但是插入刪除操作效率高;Vector也是使用數組保存元素,但是Vector是支持線程同步的,即同一時刻只支持同一個線程對Vector操作;Stack是使用的棧這種數據結構,只支持在頂端插入和彈出操作;HashSet和TreeSet都不能保存重復元素,但是TreeSet可以以升序保存元素,HashSet通過哈希表的方式保存元素。

    Map下層同樣定義了一個AbstractMap來實現Map接口中的部分方法,以使得子類可以選擇性的實現Map中的方法。Map中的實現類有TreeMap、HashMap、WeakHashMap和HashTable四個。其中TreeMap是以有序的方式保存元素,可以給Map中Key進行排序。HashMap是哈希表數據結構,效率相對要高;HashTable是Dirctionary的子類,是可以將任何Key映射到相應的值,所以在HashTable中不允許key或value存在null,而HashMap中允許存在一個為null的key和任意個位null的value。

Iterator接口下有ListIterator接口,所有的迭代器都必須實現此接口。支持通過迭代器遍歷集合元素。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved