集合Collection總覽

zaiji100 6年前發布 | 32K 次閱讀 Java 鏈表 Java開發

前言

聲明,本文使用的是JDK1.8

從今天開始正式去學習Java基礎中最重要的東西---> 集合

無論在開發中,在面試中這個知識點都是非常非常重要的,因此,我在此花費的時間也是很多,得參閱挺多的資料,下面未必就做到日更了...

當然了,如果講得有錯的地方還請大家多多包涵并不吝在評論去指正~

一、集合(Collection)介紹

1.1為什么需要Collection

  1. Java是一門面向對象的語言,就免不了處理對象
  2. 為了方便操作多個對象,那么我們就得把這多個對象存儲起來
  3. 想要存儲多個對象(變量),很容易就能想到一個 容器
  4. 常用的容器我們知道有-->StringBuffered,數組(雖然有對象數組,但是數組的長度是不可變的!)
  5. 所以,Java就為我們提供了集合(Collection)~

1.2數組和集合的區別

接下來,我們可以對數組和集合的區別來分析一下:

數組和集合的區別:

  • 1:長度的區別
    • 數組的長度固定
    • 集合的長度可變
    </li>
  • 2:內容不容
    • 數組存儲的是同一種類型的元素
    • 集合可以存儲不同類型的元素(但是一般我們不這樣干..)
    • </ul> </li>
    • 3:元素的數據類型
      • 數組可以存儲基本數據類型,也可以存儲引用類型
      • 集合只能存儲引用類型(你存儲的是簡單的int,它會自動裝箱成Integer)
      • </ul> </li> </ul>

        1.3Collection的由來與功能

        Collection的由來:

        • 集合可以存儲多個元素,但我們 對多個元素也有不同的需求
          • 多個元素,不能有相同的
          • 多個元素,能夠按照某個規則排序
          </li>
        • 針對不同的需求:java就提供了很多集合類,多個集合類的數據結構不同。但是,結構不重要,重要的是 能夠存儲東西,能夠判斷,獲取
        • 把集合 共性的內容不斷往上提取 ,最終形成集合的繼承體系---->Collection
        • </ul>

          Collection的大致結構體系是這樣的:

          但是,一般我們要掌握的并不需要那么多,只需要掌握一些常用的集合類就行了。下面我 圈出來的那些

          再次精減:

          Collection的基礎功能:

          二、迭代器(Iterator)介紹

          我們可以發現Collection的源碼中繼承了Iterable,有iterator()這個方法...

          點進去看了一下,Iterable是一個接口:

          它有iterator()這個方法,返回的是 Iterator

          再來看一下,Iterator也是一個接口,它只有三個方法:

          • hasNext()
          • next()
          • remove()

          可是,我們沒能找到對應的實現方法,只能往Collection的子類下找找了,于是我們找到了--->ArrayList(該類后面會說)

          于是,我們在ArrayList下找到了iterator實現的身影:它是在ArrayList以 內部類的方式實現 的!并且,從源碼可知: Iterator實際上就是在遍歷集合

          所以說:我們 遍歷集合(Collection)的元素都可以使用Iterator ,至于它的具體實現是以內部類的方式實現的!

          三、List集合介紹

          從上面已經可以看到了,Collection主要學習集合的類型兩種: Set和List ,這里主要講解List!

          我們來看一下List接口的方法,比Collection多了一點點:

          • List集合的 特點 就是: 有序(存儲順序和取出順序一致),可重復

          Collection返回的是Iterator迭代器接口,而List中又有它自己對應的實現--> ListIterator接口

          該接口比普通的Iterator接口多了幾個方法:

          從方法名就可以知道: ListIterator可以往前遍歷,添加元素,設置元素

          3.1List集合常用子類

          List集合常用的子類有三個:

          • ArrayList
            • 底層數據結構是數組。線程不安全
            </li>
          • LinkedList
            • 底層數據結構是鏈表。線程不安全
            • </ul> </li>
            • Vector
              • 底層數據結構是數組。線程安全
              • </ul> </li> </ul>

                現在知道有三個常用的集合類即可,后面會開新的文章來講解的~

                四、Set集合介紹

                從Set集合的方法我們可以看到:方法沒有比Collection要多

                • Set集合的特點是: 元素不可重復

                4.1Set集合常用子類

                • HashSet集合
                  • A:底層數據結構是哈希表(是一個元素為鏈表的數組)
                  </li>
                • TreeSet集合
                  • A:底層數據結構是紅黑樹(是一個自平衡的二叉樹)
                  • B:保證元素的排序方式
                  • </ul> </li>
                  • LinkedHashSet集合
                    • A::底層數據結構由哈希表和鏈表組成。
                    • </ul> </li> </ul>

                      五、最后

                      本篇主要概括了Collection的要點,并沒有深入去研究各種的集合類,該部分留到新開的章節去講解,敬請期待~~

                      明天是清明節(回家),這兩天是不更新集合的了,如果在家有空可能會刷幾道算法題然后整理后會更新公眾號~

                       

                      來自:http://zhongfucheng.bitcron.com/post/javaee/ji-he-collectionzong-lan

                       

 本文由用戶 zaiji100 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!