Java 集合類學習

一、關係圖

繼承關係圖

二、幾個比較重要的接口和類簡介

1、List(有序、索引、可重複)

     List裏存放的對象是有序的,同時也是可以重複的,List關注的是索引,擁有一系列和索引相關的方法。

     ArrayList(數組、快速訪問)

     ArrayList可以理解成一個可增長的數組,因此可以通過索引快速訪問。

     LinkedList(鏈表、快速插入、刪除)

     LinkedList是雙向鏈接的,擁有鏈表的快速插入和刪除的特性。

     Vector

     ArrayList的線程安全版,但是性能較低。

2、Set(唯一、無序)

     HashSet

     HashSet是通過HashMap實現的,Set使用了Map中的key,因此Set具有唯一性。而HashMap中通過HashCode和equals方法來確保唯一。 HashSet的contains和remove依據都是hashCode方法,如果該方法返回值相同,才判斷equals方法。

     TreeSet

     TreeSet是通過TreeMap實現的,能進行排序。

3、Map(鍵值對、鍵唯一)

     Map主要用於存儲健值對,根據鍵得到值,因此不允許鍵重複(重複了覆蓋了),但允許值重複。

     HashMap

     Hashmap 是一個最常用的Map,它根據鍵的HashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度,遍歷時,取得數據的順序是完全隨機的。HashMap最多隻允許一條記錄的鍵爲Null;允許多條記錄的值爲Null

     Hashtable

     Hashtable與HashMap類似,是HashMap的線程安全版,它繼承自Dictionary類,不同的是:它不允許記錄的鍵或者值爲空,同時效率較低。

     LinkedHashMap

     LinkedHashMap保存了記錄的插入順序,在用Iterator遍歷LinkedHashMap時,先得到的記錄肯定是先插入的.也可以在構造時用帶參數,按照應用次數排序。在遍歷的時候會比HashMap慢,不過有種情況例外,當HashMap容量很大,實際數據

     較少時,遍歷起來可能會比LinkedHashMap慢,因爲LinkedHashMap的遍歷速度只和實際數據有關,和容量無關,而HashMap的遍歷速度和他的容量有關。

     TreeMap

     TreeMap實現SortMap接口,能夠把它保存的記錄根據鍵排序,默認是按鍵值的升序排序,也可以指定排序的比較器,當用Iterator遍歷TreeMap時,得到的記錄是排過序的。

     一般情況下,我們用的最多的是HashMap,HashMap裏面存入的鍵值對在取出的時候是隨機的,它根據鍵的HashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。在Map中插入、刪除和定位元素,HashMap 是最好的選擇。
     TreeMap取出來的是排序後的鍵值對。但如果您要按自然順序或自定義順序遍歷鍵,那麼TreeMap會更好。
     LinkedHashMap是HashMap的一個子類,如果需要輸出的順序和輸入的相同,那麼用LinkedHashMap可以實現。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章