1. 程式人生 > >Java集合簡單總結

Java集合簡單總結

集合關係圖
廢話不多說先上圖
首先為什麼會出現集合這個東西呢?主要原因還是陣列的功能侷限。集合呢跟陣列一樣也是個容器,陣列可以用來存放基本資料型別和引用資料型別,但是集合只能存放引用資料型別,因為陣列一但定義好了大小就不能改變但是我們有時候需要這個容器的大小動態變化時候,陣列就滿足不了我們的需求了,所及Java中就提供了集合類,方便對物件的操作。可以看到Collection的左邊還有Iterator 這個是迭代器,迭代器就相當於一隻不斷從集合中拿東西的手,可以通過迭代器遍歷集合中的所有元素

  • collection

    先來看最中間最上層的Collection,Collection是根介面,Collection是存放一組物件的容器。Collection介面中的成員方法大致主要有兩種:一種是判斷型別的返回值是true或者false,另一種就是對其中的元素進行操作的,比如新增刪除替換這類的。可以看到Collection的左邊還有Iterator 這個是迭代器,迭代器就相當於一隻不斷從集合中拿東西的手,可以通過迭代器遍歷集合中的所有元素
    
     - List
    List是一個可以包含重複元素的Collection
    使用者可以通過操作索引的方式對此列表中的元素進行進行精確的查詢。此列表中允許有重複的元素,List集合有自己特殊的迭代器ListIterator,相比Iterator多了逆序的遍歷方式。
    List集合下面是ArrayList和LinkedList,ArrayList的底層是陣列實現的,陣列的好處呢就是查詢比較方便通過索引直接就可以找到想要的元素,但是新增和刪除比較麻煩,因為陣列的長度是不可變的所以需要重新定義一個數組,LinkedList的底層是連結串列實現的,連結串列的好處就是新增刪除比較方便直接操作連結串列的指向就可以,壞處呢就是連結串列的查詢比較慢需要從頭開始一個一個比較。
    
    
     - Set
    Set是一個不包含重複元素的 collection
    Set介面中包含HashSet和TreeSet,HashSet由雜湊表結構保證沒有重複的值,但是不保證存入和取出的順序一致,TreeSet內部自動包含了元素排序的方法。LinkedHashSet由連結串列實現存入和取出的順序一致由雜湊表保證不重複。
    
  • Map
    再來看Map介面,Map是雙列集合,將鍵對映到值的物件。一個對映不能包含重複的鍵;每個鍵最多隻能對映到一個值。

     - HashMap
     基於雜湊表的Map介面的實現允許空值和空鍵,但是不保證存入和取出的順序一致。LinkedHashMap是HashMap的子類在HashMap的基礎上通過連結串列保證了存入和取出的順序一致。
    
    
     - TreeMap也是基於雜湊表的Map例項內部實現了排序功能
    

再來看一下最後單獨的兩塊,Utilites是是工具類,其中包含了集合工具類Collections和陣列工具類Arrays 包含了一些對集合和陣列元素常用的操作的方法。

最後就是Comparable和Comparator了 TreeSet和TreeMap實現的排序功能就是通過這兩種方式。
實現Comparable介面,並且實現compareTo方法規定比較規則
或者直接通過匿名內部類的方式new Comparator重寫 compareTo方法的方式規定排序規則