1. 程式人生 > 其它 >Java集合框架學習:01

Java集合框架學習:01

Java集合框架學習:01

  • Java集合框架:

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

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

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

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

         

  • Java集合框架主要包括2種類型的容器:

    • 一種是集合(Collection),儲存一個元素集合;

    • 另一種是圖(Map),儲存鍵/值對對映;

    • Collection介面又有3種子型別,List,Set和Queue,再下面是一些抽象類,最後是具體的實現類;

    • 常用的集合實現類:ArrayList ,LinkedList , HashSet ,LinkedhashSet ,HashMap ,LinkedHashMap等;

 

  • 集合框架是一個用來代表和操作集合的統一架構,所有的集合框架都包含如下內容:

    • 介面:

      • 是代表集合的抽象資料型別,例如:Collection, List ,Set ,Map等;

      • 之所以定義多個介面,是為了滿足不同的方式操作集合物件;

    • 實現類:

      • 是集合介面的具體實現;從本質上說,他們是可重複使用的資料型別;

      • 例如:ArrayList , LinkedList ,HashSet , HashMap等

    • 演算法:

      • 是實現集合介面的物件裡的方法執行的一些有用的計算;

      • 例如:搜尋和排序;這些演算法被稱為多型;

 

  • 除了集合,該框架也定義了幾個Map介面和類,Map裡儲存的鍵/值對,儘管Map不是集合,但是他們完全整合在集合中;

 


  • 集合介面:

    • 集合框架定義了一些介面:具體如下:

      序號 介面描述
      1 Collection介面: Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素,Java不提供直接繼承自Collection的類,只提供繼承它的子介面(List和Set) Collection介面儲存一組不唯一,無序的物件;
      2 List介面: LIst介面是一個有序的Collection,使用此介面能夠精確的控制每個元素插入的位置,能夠通過索引來訪問List中的元素,第一個元素的索引是0,而且允許有相同的元素; LIst介面儲存一組不唯一,有序(插入順序)的物件;
      3 Set介面: Set具有與Collection完全一樣的介面,只是行為上不同,Set不儲存重複的元素; Set介面儲存一組唯一,無序的物件;
      4 SortedSet介面: 繼承於Set儲存有序的集合;
      5 Map介面: Map介面儲存一組鍵值物件,提供key到value的對映;
      6 Map.Entry: 描述在一個Map中的一個元素(鍵值對),是一個Map的內部介面;
      7 SortedSet: 繼承於Map,使key保持在升序排列;
      8 Enumeration: 已經被迭代器取代;

      總結:Set和List的區別:

      • Set介面儲存唯一,但無序的資料;List儲存的是有序,但不唯一的資料;

      • Set檢索效率低下,刪除和插入效率高;插入和刪除不會引起元素位置改變;

      • List和陣列類似,可以動態增長,根據實際儲存資料的長度自動增長List的長度;查詢效率高,插入和刪除效率低,因為會引起其他元素位置改變;

         

  • 集合實現類:

    • Java提供了一套實現了Collection介面的標準集合類;

      序號 類描述
      1 AbstractCollection: 實現了大部分的結合介面;
      2 AbstractList: 繼承於AbstractCollection並且實現了大部分List介面;
      3 AbstractSqquentialList: 繼承於AbstractList,提供了對資料元素的鏈式訪問而不是隨機訪問;
      4 LinkedList: 該類實現了List介面,允許有null元素,主要用於建立連結串列資料結構,該類沒有同步方法,如果多個執行緒同時訪問一個List,則必須自己實現訪問同步,解決方法就是在建立List時候構造一個同步的List; LinkedList查詢效率低;
      5  
      6  
      7  
      8  
      9  
      10  
         
         
         
         
    • 筆記:

      • 先繼續學習,其他後補;

 

  • 集合演算法:

 

  • 如何使用迭代器:

    • 程式碼案例:

      public class ListDemo01 {
         public static void main(String[] args) {

             //建立集合
             ArrayList<String> arrayList=new ArrayList<>();
             arrayList.add("Google");
             arrayList.add("baidu");
             arrayList.add("haha");

             //獲取迭代器
             Iterator<String> it=arrayList.iterator();
             System.out.println(it.next());//Google

             //迴圈輸出
             while (it.hasNext()){
                 System.out.println(it.next());//Google baidu haha
            }

        }
      }