Java集合框架01——總體框架一覽

  java集合框架是java提供的工具包,在java.util.*中,這個包中包含了常用的數據結構:集合、數組、鏈表、棧、隊列、映射等。java集合框架主要可以分爲四個部分:List列表、Set集合、Map映射和工具類(Iterator迭代器、Enumeration枚舉類、Arrays和Collections)。

        java集合框架示意圖如下:

    從圖中可以看出,java中集合框架有兩條分支:Collection和Map。

    1. Collection是一個接口,它包含了集合的基本操作和屬性。Collection包含了List和Set兩大分支

        (1) List是一個有序的隊列,每一個元素都有它的索引,第一個元素的索引值是0,List的實現類有ArrayList,LinkedList,Vector和Stack。

        (2) Set是一個不允許有重複元素的集合。Set的實現類有HashSet和TreeSet。HashSet依賴於HashMap,它實際上是通過HashMap實現的;TreeSet依賴於TreeMap,它實際上是通過TreeMap實現的。

    2. Map是一個映射接口,即key-value鍵值對。Map中的每一個元素包含一個key和key對應的value。

        (1) AbstractMap是個抽象類,它實現了Map接口中的大部分API,而HashMap,TreeMap,WeakHashMap都是繼承與AbstractMap。

        (2) HashTable雖然繼承與Dictionary,但是它實現了Map接口。

    3. Iterator是遍歷集合的工具,我們通常使用Iterator迭代器來遍歷集合。Collection依賴於Iterator是因爲Collection的實現類都要實現iterator()方法,返回一個Iterator對象。ListIterator是專門爲遍歷List而存在的。

    4. Enumeration是JDK1.0引入的抽象類,作用和Iterator一樣,也是遍歷集合,但是Enumeration的功能要比Iterator少,在上面的框圖中,Enumeration只能在HashTable,Vector和Stack中使用。

    5. Arrays和Collections是操作數組合集合的兩個工具類,它們提供了很多有用的方法。

 

其中線程安全的集合有Vector, HashTable

1.Vector

   Vector和ArrayList類似,是長度可變的數組,與ArrayList不同的是,Vector是線程安全的,它給幾乎所有的public方法都加上了synchronized關鍵字。由於加鎖導致性能降低,在不需要併發訪問同一對象時,這種強制性的同步機制就顯得多餘,所以現在Vector已被棄用

2.HashTable

     HashTable和HashMap類似,不同點是HashTable是線程安全的,它給幾乎所有public方法都加上了synchronized關鍵字,還有一個不同點是HashTable的K,V都不能是null,但HashMap可以,它現在也因爲性能原因被棄用了

    以上是集合框架的總覽,如有錯誤,歡迎留言指正~

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