1. 程式人生 > >Java Collection集合框架&Map總結

Java Collection集合框架&Map總結

Java Collection集合框架&Map

Map介面

+Map介面(沒有重複的key,出現重複的key,則value會被覆蓋)
    -HashMap類(除了“不同步”和“允許空的Key/Value”之外,與HashTable大致相同)
        -LinkedHashMap(在HashMap的基礎上,能夠保證輸出的順序和輸入的相同)

    -HashTable類(實現同步,執行緒安全,不允許空值,效率相對較低)

    +SortedMap介面
        -TreeMap類(底層用“紅黑樹”實現,保證元素有序)
+Collection介面
    +List介面
        -ArrayList類(陣列實現的List)
        -LinkedList類(雙鏈表實現的List,經常用作堆疊、佇列或者雙向佇列)
        -Vector類(陣列實現的List,支援執行緒同步)

    +Queue介面
        -不常用

    +Set介面
        -HashSet類
        -LinkedHashSet類(以連結串列維護元素插入順序)
        +SortedSet介面
            -TreeSet類
1.Collection介面常用方法                                            

add(),addAll(),clear(),equals(),
size(),toArray(),isEmpty()
Collection沒有get()方法,只能通過iterator()來遍歷元素

2.List介面自己在Collection的基礎上添加了indexOf()方法

3.LinkedList類常用方法:

    offer(E e):在列表尾部插入一個元素
    offerFirst(E e):在列表front插入一個元素
    peek():返回列表第一個元素(不刪除)
    peekFirst():返回列表第一個元素(列表為null,則返回null)(不刪除) 
    peekLast():返回列表最後一個元素(同上)
    poll():返回並刪除第一個元素
    pollFirst():與peekFirst類似
    pollLast():返回並刪除最後一個元素
    pop():用作棧時常用方法,返回棧頂元素
    push():壓入棧

4.Collections類和Arrays類

    Arrays類是一個專門用來運算元組的工具類,有一組static的方法,對陣列進行排序查詢等操作
        equals(),fill(),sort(),binarySearch()

Array類的length屬性,只能判斷array的容量,不能判斷其中真實存有多少元素
    Example:
    int arr[] = {1,2,3} System.out.print(arr.length)//列印結果為3
    int arr[] = new int[10] System.out.print(arr.length)//列印結果為10

    Collections類似Arrays,針對集合的一個工具類,也提供一系列靜態方法
  1. ArrayList和Vector的區別

    * ArrayList在記憶體不夠時預設是擴充套件50% + 1個,Vector是預設擴充套件1倍
    * vector支援indexOf(obj, start)方法,ArrayList不支援
    * vector執行緒安全,系統開銷大
    

    2.Map的遍歷方法

    //第一種遍歷:推薦
    Map<Integer,Integer> map = new HashMap<Integer,Integer>();
    for(MapEntry<Integer,Integer> entry:Map.entrySet()){
        int key =
    entry.getKey(); int value = entry.getValue(); }
    //在for-each迴圈中遍歷keys或values
    Map<Integer,Integer> map = new HashMap<Integer,Integer>();
    for(Integer key:Map.keySet()){
        System.out.print(key);
    }
    //使用迭代器iterator
    Map<Integer,Integer> map = new HashMap<Integer,Integer>();
    Iterator<Map.Entry<Integer,Integer>> entries = map.entrySet().iterator();
    while(entries.hashNext()){
        Map.Entry<Integer,Integer> entry = entries.next();
        int key = entry.getKey();
        int value = entry.getValue();
    }
     //遍歷所有value
     Map<Integer,Integer> map = new HashMap<>();
     for(Integer v : map.values()) {
         System.out.println("value= " + v);
      }