1. 程式人生 > >JavaSE入門學習33:Java集合框架概述

JavaSE入門學習33:Java集合框架概述

        一集合框架

        (1)集合的概念

        現實生活中的集合:很多的事物湊在一起。

        數學中的集合:具有共同屬性的事物的總體。

        Java中的集合類:是一種工具類,就像是容器,儲存任意數量的具有共同屬性的物件。

        (2)集合框架的概念

        有了集合的概念,什麼是集合框架呢?集合框架是為表示和操作集合而規定的一種統一的標準的體系結構。任何

集合框架都包含三大塊內容:對外的介面、介面的實現和對集合運算的演算法。

        1介面:即表示集合的抽象資料型別。介面提供了讓我們對集合中所表示的內容進行單獨操作的可能。介面允許

集合獨立操縱其代表的細節。在面向物件的語言,介面通常形成一個層次。

        2實現(類):也就是集合框架中介面的具體實現。實際它們就是那些可複用的資料結構。

        3演算法:在一個實現了某個集合框架中的介面的物件身上完成某種有用的計算的方法,例如查詢、排序等。這些

演算法通常是多型的,因為相同的方法可以在同一個介面被多個類實現時有不同的表現。事實上,演算法是可複用的函

數。如果你學過C++,那C++中的標準模版庫(STL)你應該不陌生,它是眾所周知的集合框架的絕好例子。

       集合框架被設計成要滿足以下幾個目標:

       1該框架必須是高效能的。基本集合(動態陣列,連結串列,樹,雜湊表)的實現也必須是高效的。

       2該框架允許不同型別的集合,以類似的方式工作,具有高度的互操作性。

       3對一個集合的擴充套件和適應必須是簡單的。

       (3)Java集合框架的概念

       在Java語言中,設計者對常用的資料結構和演算法做了一些規範(介面)和實現(具體實現介面的類)。除了集合,

Java集合框架也定義了幾個Map介面和類。Map裡儲存的是鍵/值對。儘管Map不是collections,但是它們完全整合在

集合中。所有抽象出來的資料結構和操作(演算法)統稱為Java集合框架(Java Collection Framework)。

       Java程式設計師在具體應用時,不必考慮資料結構和演算法實現細節,只需要用這些類創建出來一些物件,然後直接應

用就可以了,這樣就大大提高了程式設計效率。

       為此,整個集合框架就圍繞一組標準介面而設計。你可以直接使用這些介面的標準實現,諸如: LinkedList、

HashSet和HashMap等,除此之外你也可以通過這些介面實現自己的集合。

       (4)Java集合框架的作用

       1在類的內部,對資料進行組織。

       2簡單而快速的搜素大數量的條目。

       3有的集合介面,提供了一系列排列有序的元素,並且可以在序列中間快速的插入或者刪除有關元素。

       4有的集合介面,提供了對映關係,可以通過關鍵字(key)去快速查詢到對應的唯一物件,而這個關鍵字可以是任

意型別。

       (5)為何選擇集合而不是陣列——與陣列的對比

       1陣列的長度固定,集合長度可變。

       2陣列只能通過下標訪問元素,型別固定,而有的集合可以通過任意型別查詢所對映的具體物件。

       Java集合框架體系結構

       Java提供了一個豐富的集合框架,這個集合框架包含了許多介面、抽象類和實現類。這些介面和類提供了豐富的

功能,能夠滿足基本的聚合需求。下圖就是這個框架的整體結構圖:


       Java集合框架圖解釋:

       1集合介面:6個介面(短虛線表示),表示不同集合型別,是集合框架的基礎。

       2抽象類:5個抽象類(長虛線表示),對集合介面的部分實現。可擴充套件為自定義集合類。

       3實現類:8個實現類(實線表示),對介面的具體實現。

       我們主要學習的介面和實現類,也就是簡化以後的Java集合框架圖:


       我們主要學習三大類介面:

       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而存在的。

       三集合框架

       (1)集合介面

       集合框架定義了一些介面,下表提供了每個介面的概述:


       (2)集合類

       Java提供了一套實現了Collection介面的標準集合類。其中一些是具體類,這些類可以直接拿來使用,而另外一

些是抽象類,提供了介面的部分實現。標準集合類彙總於下表:



      (3)集合演算法

      集合框架定義了幾種演算法,可用於集合和對映。這些演算法被定義為集合類的靜態方法。在嘗試比較不相容的型別

時,一些方法能夠丟擲ClassCastException異常。當試圖修改一個不可修改的集合時,丟擲

UnsupportedOperationException異常。

       集合定義三個靜態的變數:EMPTY_SET EMPTY_LIST,EMPTY_MAP的。這些變數都不可改變。

       (4)迭代器

        通常情況下,你會希望遍歷一個集合中的元素。例如,顯示集合中的每個元素。做到這一點最簡單的方法是採用

一個迭代器,它是一個物件,實現了Iterator介面或ListIterator介面。

       迭代器,使你能夠通過迴圈來得到或刪除集合的元素。ListIterator繼承了Iterator,以允許雙向遍歷列表和修改元

素。這裡通過例項列出Iterator和listIterator介面提供的所有方法。

       (5)比較器

       TreeSet和TreeMap的按照排序順序來儲存元素. 然而,這是通過比較器來精確定義按照什麼樣的排序順序。這個

介面可以讓我們以不同的方式來排序一個集合。  

       四總結

       1Java集合框架為程式設計師提供了預先包裝的資料結構和演算法來操縱他們。

       2集合是一個物件,可容納其他物件的引用。集合介面宣告對每一種型別的集合可以執行的操作。

       3集合框架的類和介面均在java.util包中。

       4Java集合類庫中將介面(interface)與實現(implementation)分離。

       5Java平臺提供了一個全新的集合框架。Java集合框架主要由一組用來操作物件的介面組成。不同介面描述一組

不同資料型別。

       在後面的文章我們會詳細的介紹Java集合框架中的各種介面以及實現類,並且會做出一些例項來深入學習集合框

架,我所參考的例子是慕課網的模擬學生選課功能。有興趣的可以看一下:http://www.imooc.com/video/2415。