1. 程式人生 > >Java 集合框架_上

Java 集合框架_上

拓展 for tin 操作性 性能 rem 1.0 span img

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

  • 該框架必須是高性能的。基本集合(動態數組,鏈表,樹,哈希表)的實現也必須是高效的。

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

  • 對一個集合的擴展和適應必須是簡單的。

1 Collection

  【1】Collection是java集合框架(collection-frame)中的頂層接口。

  【2】Collection接口表示一個容器,容器中只能存儲引用數據類型,建議存同一類型的引用類型,方便後續遍歷等操作。

  【3】List接口中容器中的元素可以是有序的、可重復的,稱為。

     Set接口

中也可能是無序的、唯一的。

   特點:

   1 集合常用方法

   (add addAll)    (clear  remove  removeAll  retainAll)    改:()  查:(contains  containsAll  isEmpty  size)

   2 集合的遍歷

   Iterable 可遍歷的接口,集合接口繼承於它,集合支持快速遍歷

   Collection繼承Iterable接口,表示集合支持快速遍歷

     // 快速遍歷
        // for-each
        // Object 表示元素類型 
        
// item表示叠代變量 // c1表示集合 for (Object item : c1) { System.out.println(item.toString());

   Iterator接口類型,iterator()內部返回一個實現類實現類Iterator接口。這個實現類一定具有hasNext和next方法用於判斷是否有下一個元素和獲取下一個元素。快速遍歷就是基於叠代器工作的。

// 叠代器遍歷(國內)
        Iterator it = c1.iterator();
        while(it.hasNext()) {
            Object item 
= it.next(); System.out.println(item.toString()); } // 國外 for(Iterator it2=c1.iterator();it2.hasNext();) { Object item = it2.next(); System.out.println(item.toString()); }

  3 List接口

     特點:List 接口中的元素時有序的、可重復的。

       List基本常用方法

        增: add() addAll()   add(index,el)   addAll(index,collection)

刪: clear() remove()   removeAll()    remove(index)

改: set(index,el)

     查 get(index) indexOf() lastIndexOf()

     List接口遍歷

       ListIterator 繼承於Iterator,在Iterator的基礎上提供了以正向遍歷集合,也可以以逆序遍歷集合。

       hasNext() next ()以正向遍歷

       hasPrevious() previous ()以逆序遍歷

    // 正向遍歷
        ListIterator it2 = list1.listIterator();
        while(it2.hasNext()) {
            System.out.println(it2.next());
        }
        
        // 逆序遍歷
        while(it2.hasPrevious()) {
            System.out.println(it2.previous());
     

    List接口實現類

     ArrayList

       【1】是List接口的實現類,底層數據結構是數組,實現大小可變的數組     

       【2】線程不安全,jdk1.2

       【3】默認數組大小是10。自動拓容,拓容原則:newCapacity = oldCapacity + oldCapacity / 2

       【4】如果確定序列的元素不在增加,通過調用trimToSize()調制容量至合適的空間

    Vector  

       【1】是List接口的實現類,底層數據結構也是數組,也是大小可變的數組。

       【2】是線程安全的,jdk1.0

       【3】默認數組大小是10。自動拓容,拓容原則:newCapacity = oldCapacity +capacityIncrement(增長因子)                          

       【4】通過調用trimToSize()調制容量至合適的空間

           註意:Vector 在實現List接口的同時,同添加了自身特有的方法xxxElement,未來使用時為了程序的可拓展性

    LinkedList

       【1】是List接口的實現類,底層數據結構是鏈表。

       【2】線程不安全。

       【3】push入棧操作 / pop出棧操作

       【4】隊列(Queue)接口add 入棧操作 remove出棧操作 element() 獲取表頭元素 可能會出現NoSuchElementException異常

       【5】隊列(Queue)接口offer入棧操作poll出棧操作peek()獲取表頭元素 可能會返回特殊值(null)

       【6】雙向隊列(Deque)接口

技術分享圖片

              

Java 集合框架_上