1. 程式人生 > >Java集合特點

Java集合特點

集合
    Collection(單列集合)
          list(有序,可重複)
               ArrayList
                    底層資料結構是陣列,查詢快,增刪慢
                    執行緒不安全,效率高
               Vector
                    底層資料結構是陣列,查詢快,增刪慢
                    執行緒安全,效率低
               LinkedList
                    底層資料結構是連結串列,查詢慢,增刪快
                    執行緒不安全,效率高


          set(無序,唯一)
               HashSet
                    底層資料結構是雜湊表
                    雜湊表依賴兩個方法:hashCode()和equals()
                    執行順序:
                        首先判斷hashCode()值是否相同
                            是:繼續執行equals(),看其返回值
                                    是true:說明元素重複,不新增
                                    是false:就直接新增到集合
                            否:就直接新增到集合
                    最終:自動生成hashCode()和equals()即可


                    LinkedHashSet
                        底層資料結構由連結串列和雜湊表組成
                        由連結串列保證元素有序
                        由雜湊表保證元素唯一
                TreeSet
                    底層資料結構是紅黑樹(是一種自平衡的二叉樹)
                    如何保證元素唯一性?
                        根據比較的返回值是否是0來決定
                    如何保證元素的排序?
                        兩種方式
                            自然排序(元素具備比較性)
                                讓元素所屬的類實現Comparable介面
                            比較器排序(集合具備比較性)
                                讓集合接受一個Comparator的實現類物件
     Map(雙列集合)
         Map集合的資料結構僅僅針對鍵有效,與值無關
         儲存的是鍵值對形式的元素,鍵唯一,值可重複


         HashMap
             底層資料結構是雜湊表,執行緒不安全,效率高
                    雜湊表依賴兩個方法:hashCode()和equals()
                    執行順序:
                        首先判斷hashCode()值是否相同
                            是:繼續執行equals(),看其返回值
                                    是true:說明元素重複,不新增
                                    是false:就直接新增到集合
                            否:就直接新增到集合
                    最終:自動生成hashCode()和equals()即可


             LinkedHashMap
                  底層資料結構由連結串列和雜湊表組成
                        由連結串列保證元素有序
                        由雜湊表保證元素唯一


         Hashtable
              底層資料結構是雜湊表,執行緒安全,效率低
                    雜湊表依賴兩個方法:hashCode()和equals()
                    執行順序:
                        首先判斷hashCode()值是否相同
                            是:繼續執行equals(),看其返回值
                                    是true:說明元素重複,不新增
                                    是false:就直接新增到集合
                            否:就直接新增到集合
                    最終:自動生成hashCode()和equals()即可


         TreeMap
             底層資料結構是紅黑樹(是一種自平衡的二叉樹)
                    如何保證元素唯一性?
                        根據比較的返回值是否是0來決定
                    如何保證元素的排序?
                        兩種方式
                            自然排序(元素具備比較性)
                                讓元素所屬的類實現Comparable介面
                            比較器排序(集合具備比較性)
                                讓集合接受一個Comparator的實現類物件


到底使用哪種集合
     看需求
     看是否鍵值對形式
         是:map
             鍵是否需要排序
                 是:TreeMap
                 否:HashMap
               不知道,就使用HashMap
         否:Collection
             元素是否唯一
                 是:Set
                     元素是否需要排序
                          是:TreeSet
                          否:HashSet
                     不知道,就用HashSet
                 否:List
                     要安全嗎?
                          是:Vector(不用他,多執行緒有更好方法)
                          否:ArrayList或LinkedList
                              增刪多:LinkedList
                              查詢快:ArrayList
                          不知道:就用ArrayList
        不知道就用ArrayList


集合的常見方法及遍歷方式
      Collection:
          add()
          remove()
          contains()
          iterator()
          size()


        遍歷:
              增強for
              迭代器
      Map:
          put()
          remove()
          containskey(),containsValue()
          KeySet()
          get()
          value()
          entrySet()
          size()


        遍歷:
              根據鍵找值
              根據鍵值對物件分別找鍵和值